
Admin
14.08.2016
21:13:13

Aragaer
14.08.2016
21:13:19
>>> "".join("%02x" % ord(x) for x in "test")
'74657374'

Zahar
14.08.2016
21:13:19
Лучше может в кодировку Хаффмана?
Короче будет

Google

Admin
14.08.2016
21:13:55
А можно и короче? буду рад

Zahar
14.08.2016
21:14:18
Я с телефона и сплю)
На стаке код был даже
И на вики)
Префиксная кодировка Хаффмана

Admin
14.08.2016
21:15:38
Слишком сложно, лол

Zahar
14.08.2016
21:16:35
http://stackoverflow.com/questions/11587044/how-can-i-create-a-tree-for-huffman-encoding-and-decoding
Ниже кода в первом ответе
Есть таблица
В конце строки - кодировка буквы
Вроде 0100
Ну, двоичная

madmonday.ru
14.08.2016
21:20:39
Как можно прочитать файл, и перезаписать его полностью без стирания при открытии(как делает open с w+)? Ибо есть json, в который при открытии страницы пишутся данные, но если писать в несколько потоков то json выдаёт траблы - в конце почему-то вместо одной закрывающей фигурной скобы появляются две. Делаю так - сначала читаю через open с rt, а перезаписываю open с w+.

Google

Admin
14.08.2016
21:32:38

dmks
14.08.2016
21:33:34

Admin
14.08.2016
21:34:17
Сяп. Ща чёт напишем. ̶г̶о̶в̶н̶о̶к̶о̶д̶,̶ ̶а̶ ̶ч̶т̶о̶ ̶ж̶е̶ ̶е̶щ̶ё̶?̶)̶

Aragaer
14.08.2016
21:36:16
перезаписать без стирания это как?

Admin
14.08.2016
21:36:31
Дописать?

[Anonymous]
14.08.2016
21:36:52

Admin
14.08.2016
21:37:09
)

Aragaer
14.08.2016
21:38:24
ну как бы
a

[Anonymous]
14.08.2016
21:38:58
ь

Aragaer
14.08.2016
21:39:05
в смысле это ответ - "a"

[Anonymous]
14.08.2016
21:39:23
а

Aragaer
14.08.2016
21:39:31
mode can be 'r' when the file will only be read, 'w' for only writing (an existing file with the same name will be erased), and 'a' opens the file for appending; any data written to the file is automatically added to the end. 'r+' opens the file for both reading and writing. The mode argument is optional; 'r' will be assumed if it’s omitted.

Cal
14.08.2016
21:41:02
Привет

Stanislav
14.08.2016
21:42:24
Верблюд

Aragaer
14.08.2016
21:44:58
не-не, это разные вещи
верблюд это какХочуТакПишу.
а если начинается с заглавной, то там тоже свое название

Stanislav
14.08.2016
21:47:34
Ну эта заглавная - голова верблюда
Хотя если читать слева направо...
Можно подумать что это хвост его

Google

madmonday.ru
14.08.2016
21:47:44

Aragaer
14.08.2016
21:48:24
хм. Ну как это сделать в С я знаю, как в питоне..

Stanislav
14.08.2016
21:48:41

Aragaer
14.08.2016
21:49:00
http://stackoverflow.com/questions/4999340/python-random-access-file

madmonday.ru
14.08.2016
21:49:40

Stanislav
14.08.2016
21:49:57
Или тебе наоборот?

Aragaer
14.08.2016
21:50:37
вон смотри я написал

madmonday.ru
14.08.2016
21:50:47
w+ тоже стирается. Мне надо чтоб при открытии не стиралось, а при file.write('texxt') заменялось.

Aragaer
14.08.2016
21:50:48
через mmap делается открытие файла с рандом доступом
только оно будет не просто заменяться, а заменять с нужной позиции ровно столько байт, сколько ты записал

Stanislav
14.08.2016
21:51:29
Memory Mapped, хм... это идея
Я хз, не работал с файлами почти

Aragaer
14.08.2016
21:51:46
то есть если у тебя написано "name=Petya", а ты в начале запишешь "id", то получится "idame=Petya"
"idme=Petya" то есть

madmonday.ru
14.08.2016
21:54:20
Там json. Я его получаю, парсю, добавляю нужные значения внутрь, и потом перезаписываю.

Aragaer
14.08.2016
21:54:59
вот ты не сможешь никак записать ничего, если не совпадает длина
поэтому не стоит так делать. Пиши весь жсон целиком один раз

madmonday.ru
14.08.2016
21:56:34
Ну, так я так и делаю, но у меня файл очищается при открытии, и если в этот момент другой скрипт будет получать значения и что-то пытаться туда записать - будет не очень

Aragaer
14.08.2016
21:57:36
смотри, с мемори-маппед файлом будет боль. А именно если ты попытаешься куда-то в начало или середину что-то вписать, то у тебя ничего никуда не сдвинется, ты запишешь поверх того, что там есть. Байт в байт.
просто не надо писать в файл, в который может писать кто-то другой, ничего хорошего из этого не выйдет

Google

madmonday.ru
14.08.2016
21:58:16
Так может в с параметрами для open можно что-то сообразить?

Aragaer
14.08.2016
21:58:43
лучше сообразить на более высоком уровне. И не делать запись наперегонки

madmonday.ru
14.08.2016
21:59:13
Вот на пыхе есть параметр, который запрещает писать в файл, если он в этот момент открыт где-либо

Aragaer
14.08.2016
21:59:39
https://pypi.python.org/pypi/flock/
я не уверен, что это портируемое. В линуксе должно прокатить

madmonday.ru
14.08.2016
22:04:29
Тащить эту херню в проект ради того чтобы не ловить траблу так и не решив проблему с перезаписью неоч. Думаю может rt+ сработает, но чот не уверен

Aragaer
14.08.2016
22:04:55
лучше не писать в этот файл
лучше читать из него, писать в другой, а после окончания записи сделать ренейм новому файлу на старое место

⬗VLAD⌶K⬖
14.08.2016
22:07:27
для этого строковая переменная есть же

Admin
ERROR: S client not available

⬗VLAD⌶K⬖
14.08.2016
22:08:12
записать, потом сконкатенировать как нужно

madmonday.ru
14.08.2016
22:10:34
Чот ностальгирую по пыхе сейчас, в этом плане там проще - file_get_contents - получил, file_put_contents - записал. Всё

/dev
14.08.2016
22:12:12

madmonday.ru
14.08.2016
22:14:32
Топ вариант конечно

Kolyann
14.08.2016
22:15:23
Нихуя себе, в одном with можно юзать перечисления

madmonday.ru
14.08.2016
22:19:06
Если я в with один и тот же открою сначала с rt потом с wt разве не будет проблем?

Aragaer
14.08.2016
22:19:18
будут
если хочешь атормарную запись, пиши в другой файл, потом переименовывай

madmonday.ru
14.08.2016
22:19:55
Ибо заменять файл кажется немного не очень. Мало ли что вылезет.

Aragaer
14.08.2016
22:20:10
это стандартный подход

Google

Aragaer
14.08.2016
22:20:38
только "другой" файл должен иметь рандомное имя, чтобы не было одновременной записи

Kolyann
14.08.2016
22:21:28
Или там именно вопрос перезаписи в файле?

madmonday.ru
14.08.2016
22:22:35
Если бы оно так у меня один раз перезаписывалось, - а у меня же будет постоянно
Перезапись без стирания ?

Kolyann
14.08.2016
22:23:12
?

madmonday.ru
14.08.2016
22:25:35
Тогда уж можно вылавливать эту последнюю лишнюю скобку в json и удалять её, но это тот ещё костыль получается.

Aragaer
14.08.2016
22:26:47
могу предложить писать не в жсон, а во что-то разумное

madmonday.ru
14.08.2016
22:27:55
xml можно попробовать, либо свой формат какой-нибудь, но не знаю разумно ли - json пока всем устраивает, кроме этой траблы
Xml для меня такое, json предпочтительнее

Aragaer
14.08.2016
22:30:07
xml страдает ровно тем же
можно в какой-нибудь скулайт писать 8)
я думаю yaml можно норм

⬗VLAD⌶K⬖
14.08.2016
22:33:49
интересно import readline в 3.** есть?

madmonday.ru
14.08.2016
22:36:19
Про yaml тоже только что думал. Про Sqlite и бд - в таком случае мне нужен будет обработчик, чтобы выпарсивал из бд и отображал опять же в json/xml/yaml и тп, можно впринципе посмотреть про sqlite в будущем, но пока переписывать под него проект из-за этой сраной рандомной скобочки - не комильфо.
Ладно, спасибо, пойду спать, может что-нибудь и придумаю завтра. Печально что у питона нет по дефолту функции ОБЫЧНОЙ ПЕРЕЗАПИСИ ФАЙЛА без безбашенного удаления всего и везде при его открытии.

Aragaer
14.08.2016
22:38:21
нельзя адекватно перезаписать файл, не стирая его полностью. Питон тут ни при чем
неадекватно сколько угодно 8)

madmonday.ru
14.08.2016
22:40:28
Пыха может

⬗VLAD⌶K⬖
14.08.2016
22:41:33
в памяти можно найти символ конца файла, строки, к обычным файлам те же вирусы как то себя дописывают и ничего

Aragaer
14.08.2016
22:42:28
пыха не может ничего сделать такого, чего не может сделать питон или с
то, что пхп за один раз записывает файл, на самом деле делается именно таким образом - открыл на запись и перезаписал. Полностью