Skip to main content
 首页 » 编程设计

python之更改目录和重命名问题

2025年05月04日14insus

我希望完成的是扫描指定目录中的所有文件并删除名称中包含的数字。问题是我无法使用下面的代码更改目录。

我目前正在参加 Udacity 全栈纳米学位类(class),所以如果有人能帮助我,那也在该计划中,那将是一个加号。

代码如下:

import os 
 
def rename_files(): 
    #(1) Get file names from a folder 
    file_list = os.listdir("/Users/bill/Documents/web/LocalServer/prank") 
    #print (file_list) 
    saved_path = os.getcwd() 
    print("Our current working directory is " + saved_path) 
    os.chdir('/Users/bill/Documents/web/LocalServer/prank') 
    print("Our current working directory is ", saved_path) 
    #(2) For each file, rename filename 
    for file_name in file_list: 
        #print("Old Name - " + file_name) 
        #print("New Name - " + file_name.translate("0123457689")) 
        os.rename(file_name, file_name.translate("0123457689")) 
    os.chdir(saved_path) 
    print("Our current working directory is ", saved_path) 
 
rename_files() 

这是我得到的输出:

Our current working directory is /Users/bill/Documents/web/LocalServer 
Our current working directory is  /Users/bill/Documents/web/LocalServer 
Our current working directory is  /Users/bill/Documents/web/LocalServer 

更新 1:

我终于更改了目录,但我仍然无法重命名文件。 (例如:68chicago.jpg 到 chicago.jpg)

这是我当前的代码:

import os 
 
def rename_files(): 
    #(1) Get file names from a folder  
    file_list = os.listdir("/Users/bill/Documents/web/LocalServer/prank") 
    #print (file_list) 
    saved_path = os.getcwd() 
    print("Our current working directory is " + saved_path) 
    os.chdir('/Users/bill/Documents/web/LocalServer/prank') 
    new_path = os.getcwd() 
    print("Our current working directory is ", new_path) 
    #(2) For each file, rename filename 
    for file_name in file_list: 
        #print("Old Name - " + file_name) 
        #print("New Name - " + file_name.translate("0123457689")) 
        os.rename(file_name, file_name.translate("0123457689")) 
    print("Our current working directory is ", new_path) 
 
rename_files() 

这是我当前的输出:

Our current working directory is /Users/bill/Documents/web/LocalServer 
Our current working directory is  /Users/bill/Documents/web/LocalServer/prank 
Our current working directory is  /Users/bill/Documents/web/LocalServer/prank 

更新 2:

感谢@Dan,我终于解决了这个问题。

这是他的代码:

import os 
def rename_files(): 
    #(1) Get file names from a folder  
    file_list = os.listdir("/Users/bill/Documents/web/LocalServer/prank") 
    #print (file_list) 
    saved_path = os.getcwd() 
    print("Our current working directory is " + saved_path) 
    os.chdir('/Users/bill/Documents/web/LocalServer/prank') 
    new_path = os.getcwd() 
    print("Our current working directory is ", new_path) 
    #(2) For each file, rename filename 
    for file_name in file_list: 
        #print("Old Name - " + file_name) 
        #print("New Name - " + file_name.translate("0123457689")) 
        os.rename(file_name, ''.join([i for i in file_name if not i.isdigit()])) # This works on my machine 
    os.chdir(saved_path) 
    print("Our current working directory is ", saved_path) 
rename_files() 

请您参考如下方法:

看起来你想换一个目录,然后再换回第一个目录?如果是这种情况,您需要这样的东西:

import os 
 
def rename_files(): 
    #(1) Get file names from a folder 
    file_list = os.listdir("/Users/bill/Documents/web/LocalServer/prank") 
    #print (file_list) 
    saved_path = os.getcwd() 
    print("Our current working directory is " + saved_path) 
    os.chdir('/Users/bill/Documents/web/LocalServer/prank') 
    new_path = os.getcwd() 
    print("Our current working directory is ", new_path) 
    #(2) For each file, rename filename 
    for file_name in file_list: 
        #print("Old Name - " + file_name) 
        #print("New Name - " + file_name.translate("0123457689")) 
        os.rename(file_name, ''.join([i for i in file_name if not i.isdigit()])) # This works on my machine 
 
    os.chdir(saved_path) 
    print("Our current working directory is ", saved_path) 
 
rename_files()