Форум сайта python.su
1
file_name=str(code)+str(i).rjust(4, ‘0’) - формирует строку вида (1234-это переменная code, которая вводится пользователем, плюс четырехзначный счетчик 0001, 0002, …..)
Эта строка используется дважды: как название для выходного файла и для замены переменной Id в этом же файле.
Что мне предложил py.user.next я не понял и попросил его уточнить.
Про спецсимволы не в курсе.
Офлайн
14
str() ты не замечаешь?
py.user.next предложил тебе конвертнуть строку в байты.
Короче:
замени все str на bytes и все строковые литералы на b''
Офлайн
1
import re import glob state = input("State: ") #code=input("Code: ") code=b'0803' state_path="C:/1/USA/"+state+"/Setup/Sourse/*.img" file_list = glob.glob(state_path) i=b'0' for file in file_list: file_name=bytes(code)+bytes(i) id=b'I04C72'+ bytes(hex(i+80)[2:]) output_file = open(file_name,"wb") data = open(file, "rb").read() output_file.write( re.sub(id, file_name, data) ) output_file.close() i=i+1
Офлайн
14
i=b'0'
Офлайн
1
odnochlenЕсли этим вы хотели сказать , что надо писать i=0, то я и так пробовал.
i=b'0'
Отредактировано dnstuff (Ноя. 6, 2012 19:52:01)
Офлайн
14
Ы
Как в тройке сконвертировать число в байтовую строку? Хрень какаето.
Можно сделать так, как пуузернекст написал, но долго.
dnstuffb'0'.
Например rjust(4, ‘0’) перестает работать, я это пока убрал.
Офлайн
1
Блин, может проще другой питон поставить? Мне не принципиально. Код пишу для облегчения собственной рутины.
А как в 2.7 сконвертировать число в байтовую строку?
Отредактировано dnstuff (Ноя. 6, 2012 20:28:03)
Офлайн
14
Дело скорее в том, что я тройку слабо знаю. Некоторые вещи в ней действительно гиморнее.
Может кто-то еще подскажет.
Офлайн
1
На 2.7 сразуже заработал такой код:
import re import glob state = raw_input("State: ") code=raw_input("Code: ") state_path="C:/1/USA/"+state+"/Setup/Sourse/*.img" file_list = glob.glob(state_path) i=0 for file in file_list: file_name=bytes(code)+bytes(i) id=b'I04C72'+ bytes(hex(i+80)[2:]) output_file = open(file_name,"wb") data = open(file, "rb").read() output_file.write( re.sub(id, file_name, data) ) output_file.close() i=i+1
Офлайн
14
Естественно, на ней str и bytes - это байтовая строка, а юникодная - unicode. И str.replace должно работать.
Офлайн