Python copy file but keep original
本问题已经有最佳答案,请猛点这里访问。
Python查询。
我想复制一个名为randomfile.dat的文件,并在复制的文件末尾添加一个时间戳。
但是,我也要保留原始文件。因此,在我当前的目录(没有移动文件)中,我最终会得到:随机文件randomfile.dat.201711241923(或时间戳格式为..
有人能提出建议吗?我所做的任何尝试都会使我丢失原始文件。
打开文件时,可以指定如何使用
所以:
1 2 | with open("randomfile.dat","a") as file: file.write("some timestamp") |
或者,如果要保留此原始文件并制作副本,则需要打开此文件,复制它,然后打开新文件并写入新文件
1 2 3 4 5 6 7 8 9 10 11 12 | # 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") |
任何换行符()都将由读卡器保留,它基本上逐行读取文件。然后一行一行地写入一个新文件。循环结束后,添加时间戳,使其写入文件的最底部。
编辑:刚刚意识到OP想要做一些稍微不同的事情。这仍然有效,但您需要打开附加了时间戳的新文件:
1 2 3 4 5 | 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) |
但正如其他人提到的,您最好使用一个模块。
这个怎么样?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ 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 2 3 4 | from shutil import copy from time import time fn = 'random.dat' copy(fn, fn+'.'+str(time())) |