我在用for循环重命名文件时遇到了问题。一开始我得到了一个错误,文件正在打开,无法重命名。现在我得到了以下错误:
TypeError:需要一个整数(得到的类型为str)
希望你能帮助我的代码。
import fnmatch
import os
Path = r'PATH'
file_name =""
for file in os.listdir(Path):
if fnmatch.fnmatch(file, '*.txt'):
with open(file, 'r') as f:
fline = f.readline()[:1]
lline = f.readlines()[-1]
first = fline.replace("/", "#")
last = lline.replace("/", "#")
file_name = first + "_" +last + ".m12"
os.rename(file, file_name)
下面是一个示例,显示了我仅使用打印文件数据所得到的结果
TypeError Traceback (most recent call last)
<ipython-input-92-8f2ead3895f4> in <module>()
8 if fnmatch.fnmatch(file, '*.txt'):
9 print(file)
---> 10 with open(file, 'r') as f:
11 fline = f.readline()[:1]
12 print(fline)
TypeError: an integer is required (got type str)
更新:
戴夫建议重命名文件,我这样做了,现在出现以下错误:
PermissionError Traceback (most recent call last)
<ipython-input-5-8727ecc0f786> in <module>()
---> os.rename(file_, file_name)
(Above file was changed to file_)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process
1条答案
按热度按时间8wtpewkr1#
我能够让它工作。这是我的问题的解决方案。戴夫带领我在正确的方向与重命名文件名,在函数中循环。在此帮助后,我发现,只是使用文件打开,而不是与打开将帮助我,使我可以调用关闭函数。
谢谢大家的帮助。