【问题标题】:extract values/renaming filename in python [closed]在python中提取值/重命名文件名[关闭]
【发布时间】:2012-10-25 22:30:08
【问题描述】:

我正在尝试使用 python 重命名包含以下值的文件名:~test1~test2~filename.csv

我想将文件重命名为 filename.csv。波浪号是前两个单词的分隔符,我不希望这些单词出现在我的结局文件名中。这些词是变量。任何援助将不胜感激。谢谢!

【问题讨论】:

  • 我对 python 还很陌生,所以我正在尝试学习正则表达式、拆分/联合提取。我可以重命名一个直接的文件名,但我试图根据单词一致的模式/字符来提取文件名以提取我需要的内容。
  • 我已经将 glob 与 .rename 结合使用,但这并没有考虑通配符。
  • 在问题本身中包含该信息通常会有所帮助,通常使用您尝试过的确切代码。它向人们展示了您在发布问题之前已经花时间自行尝试,并为他们提供了一个起点,让他们了解在哪里为您寻找问题或困惑的根源。只是一个友好的提示。
  • 我很抱歉。我正在学习 python,这是我第一次使用该网站。我会阅读礼仪并改进我的努力。谢谢!
  • 如果每个人都有这种态度:)

标签: python split extract wildcard rename


【解决方案1】:

由于每个文件名的单词都会发生变化,因此最好在目录中搜索与模式匹配的文件。 glob 为你做这件事。

如果你有这样的目录:

.
├── ~a~b~c.csv
├── file.csv
├── ~foo~bar~f1.csv
└── hello.txt

然后运行这个:

import os, glob
for f in glob.glob('~*~*~*.csv'):
    os.rename(f,f.split('~')[-1])

会给你:

.
├── c.csv
├── f1.csv
├── file.csv
└── hello.txt

【讨论】:

  • 好答案。比我的提议更通用。
  • 非常有帮助...非常感谢!
【解决方案2】:
import os

myfilename = "~test1~test2~filename.csv"

for filename in os.listdir("."):
   if filename == myfilename:
       myfilename_new = myfilename.split("~")[-1]
       os.rename(filename, myfilename_new)

当然假设您的原始文件 ~test1~test2~filename.csv 存在于此 python 脚本运行的“当前/相同目录”中。

希望这对您的学习之旅有所帮助!

欢迎使用 Python!

【讨论】:

  • 非常有帮助,非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2012-12-06
  • 1970-01-01
相关资源
最近更新 更多