Python查询。
我想获取一个名为randomfile.dat的文件的副本,并在复制文件的末尾添加一个时间戳。
但是,我也希望保留原始文件。所以在我当前的目录(没有移动的文件)中,我最终得到: randomfile.dat randomfile.dat.201711241923(或任何时间戳格式为..)
有人可以提供建议吗?我试过的任何东西都会导致我丢失原始文件。
答案 0 :(得分:0)
这个怎么样?
$ ls
$ touch randomfile.dat
$ ls
randomfile.dat
$ python
[...]
>>> import time
>>> src_filename = 'randomfile.dat'
>>> dst_filename = src_filename + time.strftime('.%Y%m%d%H%M')
>>> import shutil
>>> shutil.copy(src_filename, dst_filename)
'randomfile.dat.201711241929'
>>> [Ctrl+D]
$ ls
randomfile.dat
randomfile.dat.201711241929
答案 1 :(得分:0)
当您打开文件时,您可以使用"r"
,"w"
或"a"
指定打开文件的方式。 "a"
将附加到文件(r - read,w - write)。
所以:
with open("randomfile.dat", "a") as file:
file.write("some timestamp")
或者,如果您要保留此原始并制作副本,则需要打开此文件,复制该文件,然后打开新文件并写入新文件文件
# empty list to store contents from reading file
file_contents = []
# open file you wish to read
with open('randomfile.dat', 'r') as file:
for line in file:
file_contents.append(line)
# open new file to be written to
with open('newfile.txt', 'w') as newfile:
for element in file_contents:
newfile.write(element)
newfile.write("some timestamp")
任何换行符(\ n)都将由阅读器保留,它基本上逐行读取文件。然后,您逐行写入新文件。循环结束后,添加时间戳,使其写入文件的最底部。
编辑:刚刚意识到OP想要做一些稍微不同的事情。这仍然有效,但您需要打开附加时间戳的新文件:
import datetime
datestring = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open('newfile' + datestring + '.txt', 'w') as newfile:
for element in file_contents:
newfile.write(element)
但正如其他人所提到的,你可能会更好地使用模块。