【问题标题】:Is there a way to use the name of the imported file in naming a new created file?有没有办法在命名新创建的文件时使用导入文件的名称?
【发布时间】:2021-01-28 15:52:12
【问题描述】:

在我的程序中,我导入了某个文件,最后我创建了一个保存输出的文件。我想使用导入文件的名称(有一些添加)作为新创建的文件的名称。

由于我有大量文件要导入,我想这样做是为了更好地了解哪些文件是根据哪些文件创建的。

例如:我打开一个带有file=open(‘summer.txt’) 的文件,我想使用原始文件的“summer”并添加年份,新文件的名称将是“summer2020.txt”。

我想自动检测导入文件的名称,添加年份,这将是我的新文件的名称。 (对于每个打开的文件,名称('2020')的添加都是相同的)

我还是 python 新手,所以我不知道这是否可行,或者是否有更好的方法。非常感谢您的帮助!

【问题讨论】:

  • 你试过什么?你检查过os.path 函数吗?我想你正在寻找basename
  • 使用 os.walk 获取文件名,您可以将硬编码的文件名替换为变量,并对该变量执行所需的操作。例如,in-file = 'summer.txt' , in-file+='2020' (您可以使用 datetime 模块获取年份)。然后在导出文件时使用变量 in-file。
  • 请注意,您可以为答案投票(↑-符号)。这对于您认为正确的答案尤其有意义。

标签: python file rename naming


【解决方案1】:

如果您使用的是 Python 3.9,则可以使用 pathlib 和新的 with_stem 方法

file_path=Path('summer.txt')
new_file_path = file_path.with_stem(file_path.stem+'2020')

使用 pathlib 的优点是它支持多个平台(win/osx/linux)以及它们指定路径的不同方式。还允许您轻松地将文件名拆分为词干summer 和后缀.txt

对于像 3.6.5 这样的 python 版本,您可以改为执行以下操作

new_file_path = file_path.with_name(f"{file_path.stem}2020{file_path.suffix}")

【讨论】:

    【解决方案2】:

    这是一个自动获取当前年份的示例:

    from datetime import datetime
    curdate = datetime.now()
    curyear = str(curdate.year)
    file = open('summer'+curyear+'.txt')
    

    【讨论】:

    • 非常感谢您的回答!但是,我知道如何添加年份,我正在寻找一种方法如何自动将“夏天”部分放在输出文件的名称中。
    【解决方案3】:

    因为你有很多文件,你可能想要类似的东西

    import glob, shutil
    myfiles = glob.glob("*.txt")
    for fname in myfiles:
        basename = fname[:-4] # drop .txt at the end
        newname = f"{basname}2020.txt"
        shutil.copy(fname, newname)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多