2014-11-09 3 views
0

제가 가지고있는 텍스트 파일의 중간에 줄을 삽입하고 싶습니다. 내가 시도fileinput.input을 사용하여 파일에 줄을 삽입하십시오.

: 일

for line in fileinput.input('file.txt', inplace=1): 
    if line.startswith('example'): 
     print 'input line' 

. 하지만 많은 파일을 통해 루프이 원하는, 그래서 나는 그것을 변경 :

for line in fileinput.input('{0}' .format(file), inplace=1): 
    if line.startswith('example'): 
     print 'input line' 

나는 오류 메시지가 얻을 :

Traceback (most recent call last): 
    File "addline.py", line 8, in <module> 
    for line in fileinput.input('{0}' .format(file), inplace=1): 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py", line 253, in next 
    line = self.readline() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py", line 322, in readline 
    os.rename(self._filename, self._backupfilename) 
OSError: [Errno 2] No such file or directory 
나는이 작동하지 않는 이유를 알고 싶습니다

어떤을 고칠 제안은 인정 될 것이다.

+0

문제는 file'이있는 오류 쇼를 존재하지 않는 '것으로 보인다. 'file'은 무엇입니까? 그게 파일 이름이나 디렉토리인가? – Anzel

+0

폴더에있는 파일입니다. 하지만 실제 파일 이름으로 {0}을 변경하면 작동합니다. fileinput.input과 함께 {0}을 (를) 사용하는 데 문제가 있다고 생각했습니다. 나는 모든 것을 다시 검사 할 것이다. – user1551817

+1

문제는'file'은 파이썬에서 예약 된 이름이고, f와 같은 다른 이름을 사용해보십시오. 그러면 괜찮을 것입니다. – Anzel

답변

1

문제는이 줄 것 같다 : 이것에

for line in fileinput.input('{0}' .format(file), inplace=1): 

변화 :

# f is the filename 
for line in fileinput.input('{0}'.format(f), inplace=1): 

첫 번째 문제는, 다른 이름으로 file을 변경, file 파이썬에서 예약 된 이름입니다.

그리고 복수 파일을 전달하려는 경우 list 개의 파일 이름을 전달해야합니다. 이로 변경

시도 :

... 
files = ['file1', 'file2', ...] # put your files in a list first 
# and pass the list of files to .input 
for line in fileinput.input(files, inplace=1): 
... 
+0

고마워요. 내가 분명하지 않으면 미안해. – user1551817

+0

@ user1551817, 괜찮습니다. 도움이 되었기 때문에 기쁩니다 :) – Anzel

+0

''{0} '형식 (문자열)이''문자열'과 다른 점은 무엇입니까? 'format'에 전달한 것이 문자열이 아니라면'str (thing)'일 수도 있습니다. – tripleee

관련 문제