Python副本文件,但保留原始

时间:2017-11-24 19:24:57

标签: python timestamp copy

Python查询。

我想获取一个名为randomfile.dat的文件的副本,并在复制文件的末尾添加一个时间戳。

但是,我也希望保留原始文件。所以在我当前的目录(没有移动的文件)中,我最终得到: randomfile.dat randomfile.dat.201711241923(或任何时间戳格式为..)

有人可以提供建议吗?我试过的任何东西都会导致我丢失原始文件。

2 个答案:

答案 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)

但正如其他人所提到的,你可能会更好地使用模块。