小编Den*_*nis的帖子

如何解释Python 3.6中的str.maketrans函数?

我目前正在参加Udacity课程,该课程指导学生使用Python进行编程.其中一个项目让学生重命名目录中的照片文件(删除名称中的任何数字),以便按字母顺序排列文件,之后将拼写出一条秘密信息.例如,如果文件名是"48athens",则程序试图删除数字,仅保留"athens"为文件名.

我使用的是Python 3.6,而课程讲师使用的是Python 2.7.我应该使用Python 2.7来简化学习过程.但是,现在我将继续使用Python 3.6.

教师重命名文件的方式是使用.translate函数,它在Python 2.x中使用两个参数,而Python 3.x只使用一个参数.它从文件名中删除任何数字(0到9).

import os

def rename_files(): #Obtain the file names from a folder.
    file_list = os.listdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")
    print (file_list)
    saved_path = os.getcwd()
    os.chdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")
    for file_name in file_list: #Rename the files inside of the folder.
        os.rename(file_name, file_name.translate(None, "0123456789"))
    os.chdir(saved_path)

rename_files()
Run Code Online (Sandbox Code Playgroud)

但是,这在Python 3.x中不起作用,因为它说:

TypeError: translate() takes exactly one argument (2 given)
Run Code Online (Sandbox Code Playgroud)

谢天谢地,我找到了另一种使用某人帮助的方法.但是,我不确定它是如何工作的.有人可以str.maketrans向我解释这个功能,引号中的前两个空白参数是什么?我的想法是它说:对于文件名中的前两个字符,删除任何数字(0到9).那是对的吗?例如,"48athens"如果它们是0到9之间的数字,则删除前两个字符(4和8).

import os

def rename_files(): #Obtain the file names from a folder.
    file_list = os.listdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank") …
Run Code Online (Sandbox Code Playgroud)

python string python-3.x

31
推荐指数
2
解决办法
3万
查看次数

标签 统计

python ×1

python-3.x ×1

string ×1