有没有办法在命名新创建的文件时使用导入文件的名称?
Is there a way to use the name of the imported file in naming a new created file?
在我的程序中,我导入了某个文件,最后我创建了一个文件来保存输出。我想使用导入文件的名称(添加一些)作为新建文件的名称。
由于我有大量文件要导入,我想这样做是为了更好地了解哪些文件是基于哪些文件创建的。
例如:我用 file=open(‘summer.txt’)
打开一个文件,我想使用原始文件的 'summer' 并只添加年份,新文件的名称将是 'summer2020.txt'.
我想自动检测导入文件的名称,添加年份,这将是我的新文件的名称。 (添加到名称 ('2020') 的内容对于每个打开的文件都是相同的)
我还是 python 的新手,所以我不知道这是否可行,或者是否有更好的方法。非常感谢您的帮助!
下面是一个自动获取当前年份的例子:
from datetime import datetime
curdate = datetime.now()
curyear = str(curdate.year)
file = open('summer'+curyear+'.txt')
如果您使用的是 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
.
对于 python 的版本,例如 3.6.5,您可以改为执行以下操作
new_file_path = file_path.with_name(f"{file_path.stem}2020{file_path.suffix}")
由于您有很多文件,您可能需要类似
的文件
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)
在我的程序中,我导入了某个文件,最后我创建了一个文件来保存输出。我想使用导入文件的名称(添加一些)作为新建文件的名称。
由于我有大量文件要导入,我想这样做是为了更好地了解哪些文件是基于哪些文件创建的。
例如:我用 file=open(‘summer.txt’)
打开一个文件,我想使用原始文件的 'summer' 并只添加年份,新文件的名称将是 'summer2020.txt'.
我想自动检测导入文件的名称,添加年份,这将是我的新文件的名称。 (添加到名称 ('2020') 的内容对于每个打开的文件都是相同的)
我还是 python 的新手,所以我不知道这是否可行,或者是否有更好的方法。非常感谢您的帮助!
下面是一个自动获取当前年份的例子:
from datetime import datetime
curdate = datetime.now()
curyear = str(curdate.year)
file = open('summer'+curyear+'.txt')
如果您使用的是 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
.
对于 python 的版本,例如 3.6.5,您可以改为执行以下操作
new_file_path = file_path.with_name(f"{file_path.stem}2020{file_path.suffix}")
由于您有很多文件,您可能需要类似
的文件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)