使用python创建新文本文件时出错?


68

此功能无效,并引发错误。我是否需要更改任何参数或参数?

import sys

def write():
    print('Creating new text file') 

    name = input('Enter name of text file: ')+'.txt'  # Name of text file coerced with +.txt

    try:
        file = open(name,'r+')   # Trying to create a new file or open one
        file.close()

    except:
        print('Something went wrong! Can\'t tell what?')
        sys.exit(0) # quit Python

write()

撰写问题时,请务必确定哪些内容无效。是否存在语法错误?它会崩溃吗?它会做什么,但不是您想要的吗?理想情况下,请给我们预期的结果和实际的结果。“不工作”太含糊。
chepner

15
摆脱有害的“异常处理”块,该块只会阻止您确切地了解出了什么问题。
bruno desthuilliers 2013年

+1 @brunodesthuilliers!他的意思是除了块之外不要写这样的泛型。如果不确定什么是异常,请删除异常处理并进行测试,您至少会知道出了什么问题。
2015年

1
出于好奇,open()甚至做什么?我已经阅读了以下答案并使其正常运行,尽管我之所以选择使用“ a +”而不是“ r +”,仅仅是因为我牢记一个记录的应用。但是现在它可以正常工作了,如何实际添加数据?而我要创建的文件到底在哪里?---要指定“工作”的意思,我收到以下行作为输出:<_io.TextIOWrapper name='hello' mode='a+' encoding='cp1252'>
Musixauce3000 '16

Answers:


114

如果文件不存在,open(name,'r+')将失败。

您可以使用open(name, 'w'),如果该文件不存在,则会创建该文件,但是它将截断现有文件。

或者,您可以使用open(name, 'a'); 如果该文件不存在,则会创建该文件,但不会截断现有文件。


3
“ w”或“ a”都没有为我创建新文件。
KI4JGT

愚蠢的我没有在我的路径中添加目录Desktop,所以我坐在那里缺少一部分文件路径。。。
KI4JGT

1
避免修改现有的文件,'x'可以被用来代替'w''a'
jfs

6

如果不使用try-except块,则可以使用

如果文件不存在,打开(名称('r +')),则不会执行

if os.path.exists('location\filename.txt'):
    print "File exists"

else:
   open("location\filename.txt", 'w')

如果文件不存在,“ w”将创建一个文件


6

以下脚本将用于创建任何类型的文件,并以用户输入作为扩展名

import sys
def create():
    print("creating new  file")
    name=raw_input ("enter the name of file:")
    extension=raw_input ("enter extension of file:")
    try:
        name=name+"."+extension
        file=open(name,'a')

        file.close()
    except:
            print("error occured")
            sys.exit(0)

create()

感谢您的回答,但由于“发生错误”而对我不起作用!
McLan

不遵循PEP。使用不同的缩进。错误处理异常。
鄙视

3

这很好用,但是不是

name = input('Enter name of text file: ')+'.txt' 

你应该使用

name = raw_input('Enter name of text file: ')+'.txt'

随着

open(name,'a') or open(name,'w')

7
该问题被标记为python-3.x其中raw_input不可用。
falsetru 2015年

10
python-3.x在此答案之后添加了标签
Adrian Krupa 2016年

1
import sys

def write():
    print('Creating new text file') 

    name = raw_input('Enter name of text file: ')+'.txt'  # Name of text file coerced with +.txt

    try:
        file = open(name,'a')   # Trying to create a new file or open one
        file.close()

    except:
        print('Something went wrong! Can\'t tell what?')
        sys.exit(0) # quit Python

write()

这将工作的承诺:)


1
这是否添加了上面2年的答案中不存在的任何内容?
用户

他改变了name=input()name=raw_input()。当然,已弃用。
Musixauce3000 '16

1

您可以使用os.system函数来简化操作:

import os
os.system("touch filename.extension")

这将调用系统终端来完成任务。


7
关于python的最好的事情之一就是stdlib抽象了OS特定的实用程序调用,例如touch ...最好不惜一切代价避免这种事情
f0ster

0

您可以使用 open(name, 'a')

但是,当您输入文件名时,请在两边使用反逗号,否则".txt"无法将其添加到文件名中


2
它看起来像已经提到过的先前答案open(name,'a'),所以最好将最后一行添加为注释
mc110 2014年

5
“逗号倒”?你是说单引号吗?Python不在乎将字符串括在单引号还是双引号中。仅当字符串包含匹配的定界符时才有意义;用另一种方式将其括起来可以省去转义字符的麻烦。
Tom Zych 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.