1

我有很多名称以“read”开头的 .txt 文件,我想重命名它们。我希望它们以文件中的第一行命名。我是一个非常糟糕的程序员,但我已经尝试过了,现在我被卡住了。

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

目前该脚本什么都不做,即使它有效,我也很确定这些文件不会保留它们的扩展名。

任何帮助将不胜感激,谢谢。

4

2 回答 2

1

您需要打开文件以从中获取第一行。for line in filename是一个遍历文件名而不是文件内容的 for 循环,因为您没有打开实际文件。

此外,for 循环旨在遍历所有文件,而您只需要第一行。

最后,文本文件中的一行包含行尾字符 ( '\n'),因此您需要将.strip()其删除。

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

希望有帮助

于 2013-09-10T22:19:16.963 回答
0

如果你用类似的东西替换你的内部循环怎么办:

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)
于 2013-09-10T22:20:22.013 回答