【发布时间】:2018-06-23 19:34:32
【问题描述】:
在本例中,我使用的是在 OSX shell 中使用pyenv 安装的 Python 3.6.5。
我一直在玩弄一些概念证明文件观察代码,我认为使用文件当前和上次测量的st_mtime 的增量足以“检测”文件已更改。
代码:
import os
def main():
file_path = 'myfile.txt'
last_modified = os.stat(file_path).st_mtime
while True:
check_last_modified = os.stat(file_path).st_mtime
delta = check_last_modified - last_modified
if delta != 0.0:
print("File was modified.")
last_modified = check_last_modified
if __name__ == '__main__':
main()
奇怪的是不同类型的基本文件修改操作会导致“文件被修改”。多次打印。
假设myfile.txt存在,我会根据操作得到不同数量的打印:
打印 1 次:$ touch myfile.txt
打印 2 次:$ echo "" > myfile.txt。
打印 1 次:
$ cat <<EOF > myfile.txt
> EOF
用(空行)打印 2 次:
$ cat <<EOF > myfile.txt
>
> EOF
使用python打印1次写入空字符串:
def main():
with open('myfile.txt', 'w') as _file:
_file.write('')
if __name__ == '__main__':
main()
使用python打印2次写入非空字符串:
def main():
with open('myfile.txt', 'w') as _file:
_file.write('a')
if __name__ == '__main__':
main()
最大的区别似乎是除了换行符之外的字符串的存在,但看到echo 命令如何导致两次打印,我不倾向于相信它以任何方式绑定到那个。
有什么想法吗?
【问题讨论】:
标签: python python-3.6 filemtime