如果文件不存在,请创建一个文件

时间:2016-03-04 22:58:20

标签: python createfile

我需要Python的帮助。我试图打开一个文件,如果该文件不存在,我需要创建它并打开它进行写入。到目前为止我有这个:

#open file for reading
fn = input("Enter file to open: ")
fh = open(fn,'r')
# if file does not exist, create it
if (!fh) 
fh = open ( fh, "w")

错误消息显示行if(!fh)上存在问题。我可以在Perl中使用exist吗?

11 个答案:

答案 0 :(得分:28)

嗯,首先,在Python中没有!运算符,它是not。但是open也不会无声地失败 - 它会引发异常。并且块需要正确缩进 - Python使用空格来指示块包含。

因此我们得到:

fn = input('Enter file name: ')
try:
    file = open(fn, 'r')
except IOError:
    file = open(fn, 'w')

答案 1 :(得分:25)

如果您不需要原子性,可以使用os模块:

import os

if not os.path.exists('/tmp/test'):
    os.mknod('/tmp/test')

<强>更新

正如 Cory Klein 所提到的,在Mac OS上使用 os.mknod() 您需要root权限,因此如果您是Mac OS用户,则可以使用< strong> open() 而不是 os.mknod()

import os

if not os.path.exists('/tmp/test'):
    with open('/tmp/test', 'w'): pass

答案 2 :(得分:14)

'''
w  write mode
r  read mode
a  append mode

w+  create file if it doesn't exist and open it in write mode
r+  open an existing file in read+write mode
a+  create file if it doesn't exist and open it in append mode
'''

示例:

file_name = 'my_file.txt'
f = open(file_name, 'a+')  # open file in append mode
f.write('python rules')
f.close()

我希望这会有所帮助。 [仅供参考使用python版本3.6.2]

答案 3 :(得分:12)

这里有一个快速两行代码,如果文件不存在,我可以用它来快速创建文件。

if not os.path.exists(filename):
    open(filename, 'w').close()

答案 4 :(得分:9)

使用input()意味着Python 3,最近的Python 3版本已经弃用了IOError异常(它现在是OSError的别名)。因此,假设您使用的是Python 3.3或更高版本:

fn = input('Enter file name: ')
try:
    file = open(fn, 'r')
except FileNotFoundError:
    file = open(fn, 'w')

答案 5 :(得分:4)

我认为这应该有效:

#open file for reading
fn = input("Enter file to open: ")
try:
    fh = open(fn,'r')
except:
# if file does not exist, create it
    fh = open(fn,'w')

此外,当您要打开的文件为fh = open ( fh, "w")

时,您错误地写了fn

答案 6 :(得分:1)

请注意,每次使用此方法打开文件时,文件中的旧数据都会被破坏,无论'w +'还是只是'w'。

import os

with open("file.txt", 'w+') as f:
    f.write("file is opened for business")

答案 7 :(得分:0)

首先让我提一下,您可能不想创建最终可以打开以进行读取或写入的文件对象,具体取决于不可重现的条件。您需要知道可以使用哪些方法,读取或写入,这取决于您要对文件对象执行的操作。

那就是说,你可以做那个随机磨砂提议,使用try:...除了:实际上这是建议的方式,根据蟒蛇的格言&#34;它更容易请求宽恕而不是许可&#34;。

但你也可以轻松地测试存在:

import os
# open file for reading
fn = raw_input("Enter file to open: ")
if os.path.exists(fn):
    fh = open(fn, "r")
else:
    fh = open(fn, "w")

注意:使用raw_input()而不是input(),因为input()将尝试执行输入的文本。如果你意外地想要测试文件&#34; import&#34;,你会得到一个SyntaxError。

答案 8 :(得分:0)

fn = input("Enter file to open: ")
try:
    fh = open(fn, "r")
except:
    fh = open(fn, "w")

成功

答案 9 :(得分:0)

自Python 3.4起,您可以使用内置库pathlib来创建文件(如果除许多其他系统调用功能之外还不存在)。

B

答案 10 :(得分:0)

如果您知道文件夹位置并且文件名是唯一未知的东西,

open(f"{path_to_the_file}/{file_name}", "w+")

如果文件夹位置也是未知的

尝试使用

pathlib.Path.mkdir