问题
解决方案
使用 os.path
模块来测试一个文件或目录是否存在。比如:
1
2
3
4
5
6
|
>>> import os >>> os.path.exists( '/etc/passwd' ) True >>> os.path.exists( '/tmp/spam' ) False >>> |
你还能进一步测试这个文件时什么类型的。 在下面这些测试中,如果测试的文件不存在的时候,结果都会返回False:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> # Is a regular file >>> os.path.isfile( '/etc/passwd' ) True >>> # Is a directory >>> os.path.isdir( '/etc/passwd' ) False >>> # Is a symbolic link >>> os.path.islink( '/usr/local/bin/python3' ) True >>> # Get the file linked to >>> os.path.realpath( '/usr/local/bin/python3' ) '/usr/local/bin/python3.3' >>> |
如果你还想获取元数据(比如文件大小或者是修改日期),也可以使用 os.path
模块来解决:
1
2
3
4
5
6
7
8
|
>>> os.path.getsize( '/etc/passwd' ) 3669 >>> os.path.getmtime( '/etc/passwd' ) 1272478234.0 >>> import time >>> time.ctime(os.path.getmtime( '/etc/passwd' )) 'Wed Apr 28 13:10:34 2010' >>> |
讨论
使用 os.path 来进行文件测试是很简单的。 在写这些脚本时,可能唯一需要注意的就是你需要考虑文件权限的问题,特别是在获取元数据时候。比如:
1
2
3
4
5
6
7
|
>>> os.path.getsize( '/Users/guido/Desktop/foo.txt' ) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> File "/usr/local/lib/python3.3/genericpath.py" , line 49 , in getsize return os.stat(filename).st_size PermissionError: [Errno 13 ] Permission denied: '/Users/guido/Desktop/foo.txt' >>> |
以上就是Python 如何测试文件是否存在的详细内容,更多关于Python 测试文件的资料请关注服务器之家其它相关文章!
原文链接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c05/p12_test_for_the_existence_of_file.html