2013-09-10 2 views
0

이름을 바꾸려는 "읽기"로 시작하는 이름의 .txt 파일이 많이 있습니다. 파일의 첫 번째 줄에 이름을 지정하고 싶습니다. 저는 정말 형편없는 프로그래머입니다.하지만 저는 그것을 풀어 놓았습니다. 이제는 붙어 있습니다..txt 파일의 이름을 파일의 첫 줄로 변경 하시겠습니까?

import os 
for filename in os.listdir("."): 
    if filename.startswith("read"): 
     for line in filename: 
     os.rename(filename, line) 

순간 스크립트는 아무것도 실시하지 않습니다 그리고 내가 파일이 확장자를 유지하지 않을 확신했다 경우에도 마찬가지입니다.

도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

첫 번째 줄을 가져 오려면 파일을 열어야합니다. for line in filename은 실제 파일을 열지 않았으므로 파일의 내용이 아니라 파일 이름을 반복하는 for 루프입니다.

또한가 루프 파일을 모두 반복하기위한 것입니다, 당신은 첫 번째 라인을합니다.

마지막으로 텍스트 파일의 줄에는 줄 끝 문자 ('\n')가 포함되어 있으므로 그 줄은 .strip()이어야합니다. 당신은 같은 것을 사용하여 내부 루프를 교체하면 어떻게

+0

은 좀 작동 해 주셔서 감사합니다. 파일 확장자 손실 문제는 여전히 남아 있습니다. 새로운 문제는 이제 파일 이름에 잘못된 문자가있는 것입니다 (대부분 "and :) 쉽게 제거 할 수있는 방법이 있습니까?" – user2766567

0

을하는 데 도움이

import os 
for filename in os.listdir("."): 
    if filename.startswith("read"): 
     with open(filename) as openfile: 
     firstline = openfile.readline() 
     os.rename(filename, firstline.strip()) 

희망 :

if not filename.startswith("read"): continue 
base, ext = os.path.splitext(filename) 
with open(filename, 'r') as infile: 
    newname = infile.next().rstrip() 
newname += ext 
os.rename(filename, newname) 
+0

루프에서 'continue'구문 오류가 발생했습니다 – user2766567

+0

이 코드를' filename은 os.listdir()'loop ...입니다. – wflynny

관련 문제