Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2012 12:01:05

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

dnstuff,

Например:

a = b"a"
b = b"b"
b"abcd".replace(a, b)



Офлайн

#2 Ноя. 6, 2012 12:07:46

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

GaiveR
dnstuff,Например:
В явном виде заменяемые символы вообще нигде не фигурируют.
Они вот так определяются: a='ABC'+str(hex(i+80))

Офлайн

#3 Ноя. 6, 2012 12:22:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

>>> 'abcd'.encode('latin1')
b'abcd'
>>>



Офлайн

#4 Ноя. 6, 2012 12:30:52

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

py.user.next
Не понял. У Вас же одни строки, а не переменные.

Офлайн

#5 Ноя. 6, 2012 16:16:11

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.


py.user.next, Вы не могли бы прокомментировать Ваш код? Я не в состоянии разобраться, как он может решить проблему. Заранее спасибо!

Офлайн

#6 Ноя. 6, 2012 17:09:17

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

dnstuff, если у тебя тройка (что надо было сказать в первом посте), то str - это юникодовая строка. Тебе нужно везде в коде использовать bytes() и b''.

666 постов.

Отредактировано odnochlen (Ноя. 6, 2012 17:09:42)

Офлайн

#7 Ноя. 6, 2012 17:35:04

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

odnochlen
dnstuff, если у тебя тройка (что надо было сказать в первом посте), то str - это юникодовая строка. Тебе нужно везде в коде использовать bytes() и b''.666 постов.
bytes() вместо str?

Офлайн

#8 Ноя. 6, 2012 18:02:08

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

Например.

Офлайн

#9 Ноя. 6, 2012 18:15:02

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

Вот весь код:

import re
import glob
state = input("State: ")
code=input("Code: ")
state_path="C:/"+state+"/Setup/Sourse/*.img"
file_list = glob.glob(state_path)
i=0
for file in file_list:
	file_name=str(code)+str(i).rjust(4, '0')
	id='I04C72'+ str(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
Проблема в том, как указать питону, что в строке output_file.write( re.sub(id, file_name, data) ) переменные id и file_name надо обрабатывать как бинарные.
Очевидно, что замена str() на bytes() сделает код заведомо нерабочим.

Офлайн

#10 Ноя. 6, 2012 18:18:40

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Замена символов в нетекстовых файлах.

dnstuff
file_name=str(code)+str(i).rjust(4, ‘0’)
А это что?

“Обрабатывать как” значит сконвертировать, что тебе предложил py.user.next. Но еще лучше сразу получать bytes.
state = input("State: ")
state_path="C:/"+state+"/Setup/Sourse/*.img"
Более чем странный код, но слава богу, ты этот путь не создаешь.

И re.sub реагирует на спецсимволы, ты в курсе?

Отредактировано odnochlen (Ноя. 6, 2012 18:20:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version