【问题标题】:Changing filenames in folders更改文件夹中的文件名
【发布时间】:2021-07-17 01:31:45
【问题描述】:

我有一个文件夹,其中包含很多文件,这些文件有很多副本,使它们无法读取。

例子:

cow.txt
cow.txt(1)
cow.txt(2)
cow.txt(3)
dog.txt
dog.txt(1)

我希望将所有文件结构化,以便能够打开它们。示例

cow.txt
cow(1).txt
cow(2).txt
cow(3).txt
dog.txt
dog(1).txt

您能提供的任何帮助将不胜感激。我只是想确保名称已更改,而不是要读取每个单独的文件。此外,如果可能的话,我想将文件分成 20k 块。提前谢谢你。

我曾尝试使用 os.rename 来简单地重命名文件,但我对如何有效地进行操作感到困惑,因为数字位于 .txt 之后,然后我决定读取所有文件并将它们转换为 pandas 数据框和以这种方式修复它。但是,我对如何提取文件并使用该名称制作它们感到困惑。

list_of_files = os.listdir()
df = pd.DataFrame(list_of_files, columns  = ['File_Name'])
df['.txt_removed'] = df.replace(to_replace = '.txt', value = '', regex = True)
df['txt_add'] = df['.txt_removed'] + '.txt'

要提取文件,我会这样做

for filewant_in df['txt_add']:
     if filewant in os.listdir():
         sutil.copy(os.path.join(filewant), 'new location')

我认为这个选项不会起作用,即使它给了我预期的结果。因为我想更改整体文件名。

【问题讨论】:

  • 到目前为止您尝试过什么? StackOverflow 不是编码服务,请添加你的方法,你也可以看看how to ask

标签: python directory rename


【解决方案1】:

创建一个 .py 文件并粘贴下面的代码,然后运行它。将 /mydir 路径更改为包含文件的目录的路径。代码将遍历目录,找到所有包含 .txt 作为文件扩展名的一部分,并将它们重命名为 .txt 文件。我希望它有效。

import glob, os
os.chdir("/mydir")
for file in glob.glob("*.txt*"):
    file_name = os.path.basename(file)
    part_name = file_name.split(".", 1)
    new_name = part_name[0]+'.txt'
    os.rename(file,new_name) 

【讨论】:

    【解决方案2】:

    可以使用python的标准库,os模块有os.rename函数。

    像这样:

    它是这样工作的:

    os.rename('cow.txt(1)', 'cow(1).txt')
    

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 2013-05-20
      • 2018-03-31
      • 2022-12-07
      • 2020-05-09
      • 1970-01-01
      • 2021-07-22
      • 2017-11-10
      • 1970-01-01
      相关资源
      最近更新 更多