Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 Can';t通过f.open()打开文件_Python_Python 3.x_File - Fatal编程技术网

Python Can';t通过f.open()打开文件

Python Can';t通过f.open()打开文件,python,python-3.x,file,Python,Python 3.x,File,我写了这段代码: f = open('mese.txt', 'a') 但是,似乎不会创建该文件,或者,如果我在正在编写的程序之外创建它,则根本不会打开它。 此外,程序也会运行,但在执行这些操作时,程序本身会崩溃/以0错误结束。 我怎样才能让它工作?你不需要检查任何东西。只用 f = open('mese.txt', 'a') 如果mese.txt不存在,则会创建并打开该文件进行写入,就像编写open('mese.txt',w')一样。换句话说,'w'和'a'之间的唯一区别与空

我写了这段代码:

        f = open('mese.txt', 'a')
但是,似乎不会创建该文件,或者,如果我在正在编写的程序之外创建它,则根本不会打开它。 此外,程序也会运行,但在执行这些操作时,程序本身会崩溃/以0错误结束。
我怎样才能让它工作?

你不需要检查任何东西。只用

f = open('mese.txt', 'a')

如果
mese.txt
不存在,则会创建并打开该文件进行写入,就像编写
open('mese.txt',w')
一样。换句话说,
'w'
'a'
之间的唯一区别与空文件或尚未存在的文件无关。

只需打开文件进行附加即可。执行此操作时,如果文件存在,将以追加模式打开。如果该文件不存在,将以追加模式创建并打开该文件

# if exists, opens in append mode
# if does not exist, creates and opens in append mode
file_handle = open(file_path, 'a')
虽然这不是必需的,但我建议结帐。它为平台无关路径提供了检查它们是否存在或打开它们的方法

from pathlib import Path
file_path = Path('mese.txt')
file_descriptor = file_path.open('a') # Opens (and creates) file for appending
exists = file_path.exists() # True if file exists
is_file = file_path.is_file() # True if the path leads to a file
编辑:

当然,在每种情况下,它都可以与语句一起使用

with open(file_path, 'a') as file_descriptor:
    pass

这将在完成后关闭文件句柄,即使在出现异常的情况下也是如此
open
语句既接受字符串路径,也接受
pathlib.path
对象。

其他两个答案都很好,但如果只需要一个简单的解决方案,您可以将
一起使用,如下所示:

with open('mese.txt', "a") as f:
    f.write(line)
with
将在之后清理资源(无需手动调用
close()
),即使发生异常


我发现了错误。问题是在其他行中,当我尝试使用字符串和int…

时,您没有提供足够的信息。什么是南非语?程序本身崩溃是什么意思?你有例外吗?你是如何执行这个程序的?欢迎来到SO。请阅读。
open(fn,'a')
等同于
open(fn,'w')
如果
fn
已经存在。通常,如果其他人可以在您确定某个文件不存在后创建该文件,但在您可以采取假定该文件不存在的操作之前,根据该信息执行操作之前检查该文件是否存在,则会导致竞争条件。如@wwii所述,请提供必要的信息以帮助您,例如,考虑一下<代码> EististangaseS/<代码>。你是如何运行程序的?听起来像是创建了
mese.txt
的工作目录不是你想象的那样。@wwii I删除了@chepner建议的
esistenzaMese
。程序给出的
进程已结束,退出代码为0
,其中大部分未执行。我试过用bash中的python和Pycharm IDE中的“run”。难道你不能用
打开
吗?这样更好,因为当您完成后,
with
将自动清理资源。好的,我“清理”了代码。但是仍然没有对文件执行任何操作。我尝试过,但我的问题(我无法打开或创建文件)仍然存在。@AlessioGiura-什么是
esistenzaMese
?清楚地定义您需要做什么。@AlessioGiura-您是否尝试在文件中写入一行内容?那么您现在实际上能够写入文本文件了?