2016-11-04 2 views
0

파일에서 매 2 문자를 반복하고, 일부 작업을 수행하고 결과 파일에 다른 문자를 쓰려고합니다. 파이썬의 파일에서 매 2 문자를 반복하는 방법

그래서 나는 파일을 열고 내가 파일의 제 3 자에 포인터를 설정 처음 두 characters.Then를 읽으려고하지만, 그것은 나에게 다음과 같은 오류 제공 : 이것은 내 코드입니다

'bytes' object has no attribute 'seek' 

를 :

the_file = open('E:\\test.txt',"rb").read() 
result = open('E:\\result.txt',"w+") 

n = 0 
s = 2 
m = len(the_file) 

while n < m : 

    chars = the_file.seek(n) 
    chars.read(s) 

    #do something with chars 

    result.write(chars) 
    n =+ 1 
    m =+ 2 

여기서 언급해야 할 것은 test.txt은 정수 (숫자)입니다. test.txt의 내용은 (0과 1)이 같은 바이너리 데이터의 일련의 :

01001010101000001000100010001100010110100110001001011100011010000001010001001 

는 점은 여기되지 않습니다 만, 그러나 다만 다른 뭔가 매 2 문자를 대체하고 result.txt로 작성합니다.

답변

1

seek 아니라 그 내용
사용하면 n+=하지n=+
을 길이
사용이 마침내 seek이 읽을하지 않는 한 루프의 탈옥하는 if 문을 사용하여 파일을 사용하여 2
희망 사항에 따라 원하는 결과를 얻을 수 있기를 바랍니다.
참고 : 나는 예를 들어 있기 때문에이 경우에, 당신은 덩어리 즉 read(2)보다는 read()에 파일을 순차적으로 읽고 있다는

the_file = open('test.txt',"rb") 
result = open('result.txt',"w+") 

n = 0 
s = 2 
while True: 
    the_file.seek(n) 
    chars = the_file.read(2) 
    if not chars: 
     break 
    #do something with chars 
    print chars 
    result.write(chars) 
    n +=2 
the_file.close() 

참고 파일 이름을 seek가 불필요 변경되었습니다.

the_file = open('test.txt',"rb") 
result = open('result.txt',"w+") 
while True: 
    chars = the_file.read(2) 
    if not chars: 
     break 
    #do something with chars 
    print chars 
    result.write(chars) 
the_file.close() 
: 파일 내의 위치 포인터를 변경하고 싶다고하면 seek()은 필요한 것
, 당신은 100 바이트에서 읽기 시작하고 싶었 예를 들어 말 ( seek(99))

위로 기록 될 수있다

+0

다른 모든 문자가 삭제됩니다. – TigerhawkT3

+0

나는 그것이 운동의 요점이라고 생각했다. –

+0

OP는 그들이 두 글자 이상을 반복하고 싶다고 말한다. 그들이 문자 쌍을 원하는 것처럼 나에게 보였다. – TigerhawkT3

0
당신은 그것이 File 목적 이었지만, 파일의 .read() 방법은 string로 바뀝니다 생각했기 때문에하는 string.seek() 방법을하고있었습니다

.

# open the file and load its contents as a string file_contents 
with open('E:\\test.txt', "r") as f: 
    file_contents = f.read() 

# do the stuff you were doing 
n = 0 
s = 2 
m = len(file_contents) 

# initialize a result string 
result = "" 

# iterate over the file_contents, incrementing by 2, adding to results 
for i in xrange(0, m, 2): 
    result += file_contents[i] 

# write to results.txt 
with open ('E:\\result.txt', 'wb') as f: 
    f.write(result) 

편집 :

여기에 당신이 가고 있었다 내가가 걸릴 수 있습니다 일반적인 접근 방식의 질문에 변화가 있었다 것 같다. 매초 문자를 변경하려면 몇 가지 조정이 필요합니다.

관련 문제