Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中重命名文件_Python_File_Rename - Fatal编程技术网

在Python中重命名文件

在Python中重命名文件,python,file,rename,Python,File,Rename,我正在上一门关于Udacity的Python课程。还有一个名为Rename Troubles的类,它提供了以下不完整的代码: import os def rename_files(): file_list = os.listdir("C:\Users\Nick\Desktop\temp") print (file_list) for file_name in file_list: os.rename(file_name, file_name.transl

我正在上一门关于Udacity的Python课程。还有一个名为Rename Troubles的类,它提供了以下不完整的代码:

import os
def rename_files():
    file_list = os.listdir("C:\Users\Nick\Desktop\temp")
    print (file_list)

    for file_name in file_list:
        os.rename(file_name, file_name.translate(None, "0123456789"))

rename_files()
正如讲师所解释的,这将返回一个错误,因为Python没有尝试重命名正确文件夹中的文件。然后,他继续检查“当前工作目录”,然后向Python指定重命名文件的目录

这对我来说毫无意义。我们使用for循环专门告诉Python我们想要重命名文件列表的内容,我们刚刚在rename_files()中指向了我们需要的目录。那么,为什么它不尝试在该文件夹中重命名呢?为什么我们仍然需要找出cwd,然后改变它??代码看起来完全符合逻辑,没有任何这些

仔细看看你能得到什么。它只返回名称列表,不返回完整路径

然后,您将进入
os。重命名其中一个名称,它将被解释为相对于当前工作目录的相对路径

您可以将正在搜索的路径
os.path.join()
搜索到
os.rename()

的两个参数的前面,而不是搅乱当前的工作目录。它只返回名称列表,不返回完整路径

然后,您将进入
os。重命名其中一个名称,它将被解释为相对于当前工作目录的相对路径


您可以将正在搜索的路径
os.path.join()
搜索到
os.rename()

的两个参数的前面,而不是搅乱当前的工作目录。您可以从任何现有目录获取文件列表,即

os.listdir("C:\Users\Nick\Desktop\temp")

等等


用于运行代码的Python解释器实例正在一个独立于您试图获取其信息的任何目录的目录中执行。因此,为了重命名正确的文件,您需要指定该文件的完整路径(或运行Python解释器的位置的相对路径)。

您可以从任何现有目录获得文件列表,即

os.listdir("C:\Users\Nick\Desktop\temp")

等等


用于运行代码的Python解释器实例正在一个独立于您试图获取其信息的任何目录的目录中执行。因此,为了重命名正确的文件,您需要指定该文件的完整路径(或运行Python解释器的位置的相对路径)。

我认为您的代码需要一些格式化帮助


基本问题是
os.listdir()
返回相对于指定目录的名称(在本例中为绝对路径)。但是您的脚本可以从任何目录运行。操作传递给os.rename()的文件名以说明这一点。

我认为您的代码需要一些格式化帮助


基本问题是
os.listdir()
返回相对于指定目录的名称(在本例中为绝对路径)。但是您的脚本可以从任何目录运行。操作传递给os.rename()的文件名以解释此问题。

查看相对路径和绝对路径,
listdir
返回相对于提供给
listdir
的路径(在本例中为绝对路径)的名称
os.rename
将被赋予此相对名称,除非应用程序的当前工作目录(通常是您启动应用程序的目录)与提供给
listdir
的目录相同,否则此操作将失败

有两种替代方法可以处理此问题,即更改当前工作目录:

os.chdir("C:\Users\Nick\Desktop\temp")
for file_name in os.listdir(os.getcwd()):
    os.rename(file_name, file_name.translate(None, "0123456789"))
或者使用绝对路径:

directory = "C:\Users\Nick\Desktop\temp"
for file_name in os.listdir(directory):
    old_file_path = os.path.join(directory, file_name)
    new_file_path = os.path.join(directory, file_name.translate(None, "0123456789"))
    os.rename(old_file_path, new_file_path)

查看相对路径和绝对路径,
listdir
返回相对于提供给
listdir
的路径(在本例中为绝对路径)的名称
os.rename
将被赋予此相对名称,除非应用程序的当前工作目录(通常是您启动应用程序的目录)与提供给
listdir
的目录相同,否则此操作将失败

有两种替代方法可以处理此问题,即更改当前工作目录:

os.chdir("C:\Users\Nick\Desktop\temp")
for file_name in os.listdir(os.getcwd()):
    os.rename(file_name, file_name.translate(None, "0123456789"))
或者使用绝对路径:

directory = "C:\Users\Nick\Desktop\temp"
for file_name in os.listdir(directory):
    old_file_path = os.path.join(directory, file_name)
    new_file_path = os.path.join(directory, file_name.translate(None, "0123456789"))
    os.rename(old_file_path, new_file_path)

如果您想要实际的文件,您应该遍历
os.path.walk
我认为
listdir
行无论如何都不会工作,除非您有一个名为“Desktop[tab character]emp”的目录,或者您可以使用
os.walk
tooHey@boysangur,为什么要在引号中加上“current working directory”?如果您想要实际的文件,你应该遍历
os.path.walk
我认为
listdir
行无论如何都不会起作用,除非你有一个名为“Desktop[tab character]emp”的目录,或者你可以使用
os.walk
tooHey@boysangur,你为什么把“current working directory”放在引号里?我想我明白了。文件列表只是一个名称列表,没有任何附加到这些名称的信息。非常感谢。我也会考虑在代码中添加<代码>打印< /代码>语句,这样你就可以看到发生了什么。我想我明白了。文件列表只是一个名称列表,没有任何附加到这些名称的信息。非常感谢。我也会考虑在代码中添加<代码>打印< /代码>语句,这样你就可以看到正在发生的事情。