关于时间戳:python复制文件但保持原始

Python copy file but keep original

本问题已经有最佳答案,请猛点这里访问。

Python查询。

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

但是,我也要保留原始文件。因此,在我当前的目录(没有移动文件)中,我最终会得到:随机文件randomfile.dat.201711241923(或时间戳格式为..

有人能提出建议吗?我所做的任何尝试都会使我丢失原始文件。


打开文件时,可以指定如何使用"r""w""a"打开文件。"a"将附加到文件(r-read,w-write)。

所以:

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()))