Python - 删除目录中特定文件的最后几个字符

时间:2015-09-18 00:10:34

标签: python rename

我尝试使用rename功能删除特定目录中多个文件的最后几个字符。我使用本网站上的建议编写的代码看起来应该可以工作,但它会返回错误消息:

  

FileNotFoundError:[WinError 2]系统找不到指定的文件:' test1.txt' - > '测试'

这是我的代码:

import os

list = os.listdir("C:\\Users\\Jonathan\\Desktop")

for file in list:
    if file.startswith("test"):
        os.rename(file, file[0:4])

我的代码显示,对于以" test"开头的所有文件,请删除其后的所有字符。正如我所说,对我来说它看起来应该可行,但我是Python的新手,我甚至不理解错误信息的含义。

4 个答案:

答案 0 :(得分:1)

由于您没有指定文件的完整路径,因此您的程序可能正在保存在根目录中。此外,您不应使用listfile作为变量名称,因为它们会影响Python的两种类型。

import os

files_path = "C:\\Users\\Jonathan\\Desktop\\"

lst = os.listdir(files_path)

for file_name in lst:
    if file_name.startswith("test"):
        os.rename(files_path + file_name, files_path + file_name[:-4])

答案 1 :(得分:1)

您实际上是在重命名的文件夹中吗?如果没有,问题很可能是您正在查找本地文件夹(您启动该程序的位置)。将该路径前置到每个文件名:

import os

cwd = "C:\\Users\\Jonathan\\Desktop"
list = os.listdir(cwd)

for file in list:
    if file.startswith("test"):
        os.rename(cwd+file, cwd+"test")

答案 2 :(得分:0)

试试这个:

import os

list = os.listdir("C:\\Users\\Jonathan\\Desktop\\")

for file in list:
    if file[:4] == "test":
        os.renames(list+file, list+file[:4])

顺便说一句,如果你需要找到文件并递归地重命名它们(这意味着将找到该目录中的所有目录)。您可以像这样使用os.walk()

for root, dirs, files in os.walk("C:\\Users\\Jonathan\\Desktop\\"):                                
    for name in files:
        if name[:4] == "test":
            os.renames(os.path.join(root, name), os.path.join(root, name)[:4])

答案 3 :(得分:0)

您需要将os.rename()与现有路径一起使用。如果您的工作目录不是包含该文件的目录,则脚本将失败。这应该独立于您的工作目录:

files_path = "C:\\Users\\Jonathan\\Desktop\\"
lst = os.listdir(files_path)

for fle in lst:
    if fle.startswith("test"):
        os.rename(os.path.join(files_path, fle), 
                  os.path.join(files_path, fle[:4]) )

并避免使用list作为可变名称。