Create a file if it doesn't exist
我需要关于python的帮助。我正试图打开一个文件,如果该文件不存在,我需要创建并打开它进行写入。到目前为止我有:
1 2 3 4 5 6 | #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") |
错误消息显示,
首先,在python中没有
因此我们得到:
1 2 3 4 5 | fn = input('Enter file name: ') try: file = open(fn, 'r') except IOError: file = open(fn, 'w') |
如果不需要原子性,可以使用OS模块:
1 2 3 4 | import os if not os.path.exists('/tmp/test'): os.mknod('/tmp/test') |
更新:
正如Cory Klein提到的,在使用os.mknod()的Mac OS上,您需要根权限,因此如果您是Mac OS用户,则可以使用open()而不是os.mknod()。
1 2 3 4 | import os if not os.path.exists('/tmp/test'): with open('/tmp/test', 'w'): pass |
1 2 3 4 5 6 7 8 9 | ''' 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 ''' |
例子:
1 2 3 4 | 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版]
使用
1 2 3 4 5 | fn = input('Enter file name: ') try: file = open(fn, 'r') except FileNotFoundError: file = open(fn, 'w') |
我认为这应该有效:
1 2 3 4 5 6 7 | #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') |
另外,当您要打开的文件是
警告:每次使用此方法打开文件时,无论是"w+"还是"w",都会销毁文件中的旧数据。
1 2 3 4 | import os with open("file.txt", 'w+') as f: f.write("file is opened for business") |
1 2 3 4 5 | fn = input("Enter file to open:") try: fh = open(fn,"r") except: fh = open(fn,"w") |
成功
首先,我要说明的是,您可能不希望创建一个文件对象,该对象最终可以打开进行读或写,这取决于不可复制的条件。您需要知道哪些方法可以使用,读或写,这取决于您想对FileObject做什么。
也就是说,你可以按照一个随机的建议来做,使用try:…除了:事实上,这是提议的方式,根据python的座右铭"请求宽恕比请求允许更容易"。
但你也可以很容易地测试它的存在:
1 2 3 4 5 6 7 | 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") |
注意:使用原始输入()而不是输入(),因为输入()将尝试执行输入的文本。如果您不小心想要测试文件"import",您将得到一个语法错误。