如何在Python中获取目录中的文件列表并对其重命名

uqdfh47h  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(133)

我在用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
8wtpewkr

8wtpewkr1#

我能够让它工作。这是我的问题的解决方案。戴夫带领我在正确的方向与重命名文件名,在函数中循环。在此帮助后,我发现,只是使用文件打开,而不是与打开将帮助我,使我可以调用关闭函数。
谢谢大家的帮助。

import fnmatch
import os

Path  = r'PATH'
file_name =""
nf = ""

for file in os.listdir(Path):
    if fnmatch.fnmatch(file, '*.txt'):
       f = open(file_, 'r')
       fline = f.readline()[:1]
       lline = f.readlines()[-1]

       first = fline.replace("/", "#")
       last = lline.replace("/", "#")

    fn = first + "_" +last + ".m12"

    f.close()
    os.rename(file_, fn)

相关问题