Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Python检查文件是否存在,并在文件不存在时创建它';T_Python_File_Python 3.x_Py2app - Fatal编程技术网

如何让Python检查文件是否存在,并在文件不存在时创建它';T

如何让Python检查文件是否存在,并在文件不存在时创建它';T,python,file,python-3.x,py2app,Python,File,Python 3.x,Py2app,如何让Python查看是否有它需要的文件,以及是否没有创建文件 基本上,我希望Python查找我的文件名KEEP-IMPORTANT.txt,但当我使用py2app创建我的应用程序时,它无法工作,因为它没有该文件。当我尝试创建文件时,它不会工作(我认为是因为python必须生成它) 我希望Python检查文件是否存在,如果存在,则不会生成文件,否则会生成文件。 这是最好的方法: try: with open(filename) as file: # do whatever

如何让Python查看是否有它需要的文件,以及是否没有创建文件


基本上,我希望Python查找我的文件名
KEEP-IMPORTANT.txt
,但当我使用
py2app
创建我的应用程序时,它无法工作,因为它没有该文件。当我尝试创建文件时,它不会工作(我认为是因为python必须生成它)

我希望Python检查文件是否存在,如果存在,则不会生成文件,否则会生成文件。

这是最好的方法:

try:
    with open(filename) as file:
        # do whatever
except IOError:
    # generate the file

还有os.path.exists(),但这可能是一个安全问题。

这一行程序将检查文件是否存在,如果不存在,则创建它

open("KEEP-IMPORTANT.txt", "a")
导入操作系统路径
从操作系统导入路径
如果path.exists('highScore.txt'):
打印(“它存在”)
其他:
打印(“它不存在”)

如果您只想检查并创建文件,而不需要立即写入任何内容,另一个干净、小巧的解决方案就是这样

import os
if os.path.exists(file_path) == False:
    open(file_path, "w").close

你想用这个文件做什么?覆盖它?读了吗?附加到它上面?两者都有?“当我尝试创建文件时,它不会工作(我认为是因为python必须生成它)。”几乎没有。您应该添加更多详细信息,并显示您拥有的相关代码。该文件需要存在,而应用程序可能无法找到KEEP-IMPORTANT.txt,因为应用程序的当前工作目录与您期望的不同。默认工作目录为.app/Contents/Resources。如果文件是只读数据文件,您可以将其复制到应用程序包中(py2app有一个选项),我设计了一个示例来测试此方法的缺陷。在python 2.7中,权限错误引发IOError。我撤销了对测试文件的读取权限,但允许写入。尝试读取文件时产生了一个IOError,我可以使用此异常覆盖它。这在Python3中不起作用,因为读取文件会产生PermissionError。这可能是一种不太可能发生的利基情景。我想知道在现有文件中发生IOError的其他方式有哪些。如果您对该文件没有rw权限,那么尝试关闭它是否会引发另一个IOError?在python 3中,它会引发PermissionError。我测试了一个不太可能的场景,即您有写权限,但没有读权限。在本例中,对于python 2.7,读取文件会引发IOError,但我仍然可以使用写入权限对其进行写入。这个答案引入了竞争条件——在您尝试打开文件和尝试创建文件之间,文件可能是由另一个进程创建的。正确的答案是使用正确的选项打开文件,以控制写入、追加、截断等操作。为文件创建+1且无错误-但删除文件先前的位如何?@cutrightjm将模式更改为“w”(写入)。将覆盖现有内容。