2016-07-10 77 views
0

如何向用户询问文件名,如果它已经存在,询问用户是否要覆盖它,并服从他们的请求。如果文件不存在,应该创建一个新文件(带有选定的名称)。 无论从Python的网站和堆栈溢出的一些研究,我想出了这个代码创建文件循环

try: 
    with open(input("Please enter a suitable file name")) as file: 
     print("This filename already exists") 

except IOError: 
    my_file = open("output.txt", "r+") 

但这不会在Python运行,而没有做的一切,我想要它做的。

+0

在'as as file'之前你忘记''''吗? –

+0

它显示了什么错误? –

+0

您是否在考虑检查文件存在的竞争条件? – sberry

回答

1

替代soltution会(但是用户需要提供完整路径):

import os 

def func(): 
    if os.path.exists(input("Enter name: ")): 
     if input("File already exists. Overwrite it? (y/n) ")[0] == 'y': 
      my_file = open("filename.txt", 'w+') 
     else: 
      func() 

    else: 
    my_file = open("filename.txt", 'w+') 

不要忘记关闭文件对象时,不是用my_file.close()不再需要它。

+0

嗨我试图在您自己的解决方案在一个单独的python文件只是在自己的和出现以下错误输入nametesting 追溯(最近呼叫最后): 第6行,在 my_file = open(“filename.txt”,'r +') FileNotFoundError:[Errno 2]没有这样的文件或目录:'filename.txt' – Ollie

+0

您应该使用''w +'来代替' 'r +'',编辑。 – sxnwlfkk

+0

我改变了,现在这个错误出现my_file = open(“filename.txt”,'r +') FileNotFoundError:[Errno 2]没有这样的文件或目录:'filename.txt' – Ollie

1

您可以使用os.path.exists来检查文件是否已经存在。

if os.path.exists(file path): 
    q = input("Do you want to overwrite the existing file? ") 
    if q == (your accepted answer): 
     #stuff 
else: 
    #stuff 

你可以用一个try /做到这一点,如果你想通过全遵守“更容易请求原谅”的校训,除了,但我认为这是清洁工。

+0

你在(文件路径)中放置了什么? – Ollie

+0

因为OP想要检查常规文件,是不是'os.path.isfile'更好的选择? – SilentMonk

+0

你可以这样做,作为一个选项'file_path = input(“指定文件路径”)' – Pythonista