gpt4 book ai didi

python - 使用 Python 从多个文件名中删除句点

转载 作者:行者123 更新时间:2023-11-30 23:38:47 24 4
gpt4 key购买 nike

我找到了几篇与此相关的帖子,但是当我尝试使用建议的代码时,我不断收到“系统找不到指定的文件”。我想这是某种路径问题。 “Cust”文件夹中有多个文件夹,每个文件夹都有多个文件,有些文件夹有“.”。在我需要删除的文件名中。知道我这里有什么问题吗?

customer_folders_path = r"C:\Users\All\Documents\Cust"
for directname, directnames, files in os.walk(customer_folders_path):
for file in files:
filename_split = os.path.splitext(file)
filename_zero = filename_split[0]
if "." in filename_zero:
os.rename(filename_zero, filename_zero.replace(".", ""))

最佳答案

当您使用os.walk时然后迭代文件,请记住,您只是迭代文件名 - 而不是完整路径(这是 os.rename 正常运行所需的路径)。您可以通过添加文件本身的完整路径来进行调整,在您的情况下,该路径将通过加入 directname 来表示和filename_zero一起使用os.path.join :

os.rename(os.path.join(directname, filename_zero), 
os.path.join(directname, filename_zero.replace(".", "")))

此外,不确定您是否在其他地方使用它,但您可以删除 filename_split变量并定义 filename_zerofilename_zero = os.path.splitext(file)[0] ,这会做同样的事情。您可能还想更改customer_folders_path = r"C:\Users\All\Documents\Cust"customer_folders_path = "C:/Users/All/Documents/Cust" ,因为 Python 将正确解释该目录。

编辑:正如@bozdoz明智地指出的那样,当您拆分后缀时,您会丢失“原始”文件,因此无法找到它。这是一个适合您的情况的示例:

import os

customer_folders_path = "C:/Users/All/Documents/Cust"
for directname, directnames, files in os.walk(customer_folders_path):
for f in files:
# Split the file into the filename and the extension, saving
# as separate variables
filename, ext = os.path.splitext(f)
if "." in filename:
# If a '.' is in the name, rename, appending the suffix
# to the new file
new_name = filename.replace(".", "")
os.rename(
os.path.join(directname, f),
os.path.join(directname, new_name + ext))

关于python - 使用 Python 从多个文件名中删除句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com