我正在尝试打开一个文件,如果该文件不存在,则需要创建该文件并将其打开以进行写入。到目前为止,我有:
#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)
。我可以exist
在Perl中使用like吗?
我正在尝试打开一个文件,如果该文件不存在,则需要创建该文件并将其打开以进行写入。到目前为止,我有:
#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)
。我可以exist
在Perl中使用like吗?
Answers:
如果您不需要原子性,则可以使用os模块:
import os
if not os.path.exists('/tmp/test'):
os.mknod('/tmp/test')
更新:
正如Cory Klein所提到的,在Mac OS上使用os.mknod()必须具有root权限,因此,如果您是Mac OS用户,则可以使用open()而不是os.mknod()。
import os
if not os.path.exists('/tmp/test'):
with open('/tmp/test', 'w'): pass
sudo
。
exists()
和之间创建竞争条件open()
。
exists()
和open()
是两个分开的调用,所以此解决方案不是原子的。从理论上讲,这两个函数调用之间会有一段时间,此时另一个程序也可能会检查文件的存在并在未找到文件的情况下创建文件。
'''
w write mode
r read mode
a append mode
w+ create file if it doesn't exist and open it in (over)write mode
[it overwrites the file if it already exists]
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版]
好吧,首先,在Python中没有!
运算符,那就是not
。但open
也不会默默地失败-它将引发异常。并且需要适当地缩进块-Python使用空格指示块包含。
这样我们得到:
fn = input('Enter file name: ')
try:
file = open(fn, 'r')
except IOError:
file = open(fn, 'w')
open(fn, 'a').close()
。是因为seek
append中的隐式可能太昂贵了?
这是一个快速的两层代码,如果文件不存在,我可以使用它来快速创建文件。
if not os.path.exists(filename):
open(filename, 'w').close()
我认为这应该工作:
#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
except
不是一个好主意。
class
。
首先让我提到,您可能不希望创建一个文件对象,该文件对象最终可以打开以进行读取或写入,这取决于不可复制的条件。您需要知道可以使用,读取或写入哪些方法,这取决于您要对文件对象执行的操作。
就是说,您可以按照try One ...所建议的方法进行操作,除了try:...。实际上,这是建议的方法,根据python的座右铭“请求宽恕比允许容易”。
但是您也可以轻松地测试是否存在:
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()会尝试执行输入的文本。如果您不小心要测试文件“导入”,则会收到SyntaxError。
input()
且raw_input()
仅适用于Python 2的注释。Python 3已替换raw_input()
为input()
,而“”的“旧”用法input()
已消失。