2013-08-30 13 views
66

Diese Funktion funktioniert nicht und löst einen Fehler aus. Muss ich irgendwelche Argumente oder Parameter ändern?Fehler beim Erstellen einer neuen Textdatei mit Python?

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() 
+0

Wenn eine Frage zu schreiben, immer sicher sein, * zu sagen, was * nicht funktioniert. Gibt es einen Syntaxfehler? Stürzt es ab? Tut es etwas, aber nicht das, was Sie vorhaben? Idealerweise geben Sie uns das erwartete Ergebnis und das tatsächliche Ergebnis. "Funktioniert nicht" ist zu vage. – chepner

+13

Beseitigen Sie diesen schädlichen "Ausnahmebehandlungs" -Block, der nur verhindert, dass Sie genau wissen, was schiefgelaufen ist. –

+0

+1 @brunodesthuilliers! Was er meint, ist, schreiben Sie nicht solche generischen außer Blöcke. Wenn Sie sich nicht sicher sind, welche Ausnahmen bestehen, entfernen Sie die Ausnahmebehandlung und testen Sie, Sie werden zumindest wissen, was schief läuft. – 0xc0de

Antwort

110

Wenn die Datei nicht existiert, schlägt open(name,'r+') fehl.

Sie können verwenden, die die Datei erstellt, wenn die Datei nicht vorhanden ist, aber die vorhandene Datei wird abgeschnitten.

Alternativ können Sie open(name, 'a') verwenden; Dadurch wird die Datei erstellt, wenn die Datei nicht existiert, die vorhandene Datei wird jedoch nicht abgeschnitten.

+2

Weder" w "noch" a "erstellt eine neue Datei für mich. – KI4JGT

+0

@ KI4JGT, Haben Sie einen Fehler erhalten? – falsetru

+0

Dumm mir das Verzeichnis Desktop in meinem Pfad nicht hinzugefügt, so dass ich saß dort einen Teil des Dateipfads fehlt. . . – KI4JGT

0

können Sie verwenden open(name, 'a')

Wenn Sie jedoch Dateinamen eingeben, verwenden Sie Anführungszeichen auf beiden Seiten, sonst ".txt" kann nicht auf Dateinamen hinzugefügt werden

+2

es sieht aus wie die vorherige Antwort bereits erwähnt offen (Name, 'a'), so wäre es besser, nur Ihre letzte Zeile als Kommentar – mc110

+5

"Inverted Kommas"? Meinst du * einfache Anführungszeichen *? Python ist es egal, ob Sie eine Zeichenfolge in einfache oder doppelte Anführungszeichen einschließen. Es spielt nur eine Rolle, ob die Zeichenfolge ein passendes Trennzeichen enthält. Wenn Sie es in die andere Art einschließen, können Sie sparen, indem Sie dem eingeschlossenen Zeichen entkommen. –

3

Das funktioniert ganz gut, aber statt

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

sollten Sie

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

zusammen mit

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

Die Frage ist als 'python-3.x' markiert, in der' raw_input' nicht verfügbar ist. – falsetru

+10

Tag 'python-3.x' wurde nach dieser Antwort hinzugefügt –

5

statt try-except der Verwendung von Blöcken, können Sie verwenden, wenn sonst

dies wird nicht ausgeführt, wenn die Datei nicht vorhanden ist, offen (Name, 'r +')

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

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

'w' eine Datei erstellt, wenn seine nicht-exis

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() 

dies wor k Versprechen :)

+1

Fügt dies etwas hinzu, das nicht bereits in den 2 Jahre alten Antworten vorhanden war? –

+0

Er hat 'name = input()' in 'name = raw_input()' geändert. Natürlich ist das veraltet. – Musixauce3000

2

Sie können Funktion der Einfachheit halber os.system:

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

Das ruft Systemendgerät, um die Aufgabe zu erfüllen.

+5

eines der besten Dinge über Python ist die Stdlib abstrahiert weg Betriebssystem spezifische Dienstprogramm Anrufe wie Touch ... am besten, um etwas wie das um jeden Preis zu vermeiden – f0ster

6

folgende Skript verwenden, um jede Art von Datei zu erstellen, mit Benutzereingabe als Erweiterung

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() 
+0

Vielen Dank für Ihre Antwort, aber leider funktioniert nicht für mich als "Fehler aufgetreten" !! –

+0

Nicht nach PEP. Unterschiedliche Einrückung verwenden Falsche Behandlung der Ausnahme. – Desprit

Verwandte Themen