Hier ist mein Code, ich könnte Ihre Hilfe verwenden.Lesen, Schreiben, Anhängen und Löschen von Dateien in Python
Mein Programm soll Dateneingabe akzeptieren, neue Textdateien erstellen, Textdateien lesen und schreiben, Text an bereits vorhandene Textdateien anhängen, Dateien abschneiden und löschen. Jetzt ist das Problem, das ich mit meinem Programm habe, dass der Teil des Codes, der Text anhängen soll, den Inhalt einer Textdatei abschneiden und eine Textdatei löschen, nicht funktioniert und das Programm keine Fehler während der Laufzeit zurückgibt .
import os
from sys import argv
filename = argv
def menu():
holder = input("enter 1 to create new file or 2 to use existing ones\n")
if holder == 1:
dam = raw_input("Enter name of new text file:\n")+'.txt'
textfile = open(dam, 'w+')
happ = raw_input("\nPlease enter record into your new file\n\n")
textfile.write(happ)
textfile.close()
print "*******************"
print "*******************\n"
print "To view the content of your new file, enter 'yes' otherwise enter 'no' to exit"
gett = raw_input()
if gett == 'yes':
print "*******************"
print "\nyour inputted record is>>>\n"
display = open(dam)
print(display.read())
print'\n'
menu()
elif gett == 'no':
print ("\nOk, see you later. Have a nice day!")
print'\n'
menu()
else:
print "\nyou have entered a wrong input"
print '\n'
menu()
elif holder == 2:
filename = raw_input("Enter name of file:\n")+'.txt'
entry = raw_input("Press 7 to append text into this file, 8 to truncate the content of this file, or 9 to delete this file : ")
if entry == 7:
print ("Displayed below is the content of your file, continue to append more text at the bottom of the file.(text is limited to 3 lines)\n")
textfiles = open(filename, 'a+')
print (textfiles.read())
line1 = raw_input()
line2 = raw_input()
line3 = raw_input()
print "\nSaving..."
textfiles.write(line1)
textfiles.write('\n')
textfiles.write(line2)
textfiles.write('\n')
textfiles.write(line3)
textfiles.write('\n')
print "\nSaved!"
textfiles.close()
elif entry == 8:
textfiles = open(filename, 'w')
print "Truncating the file..."
textfiles.truncate()
print "Done, truncated."
textfiles.close()
right = raw_input("Do you want to write into this file? Y/N : ")
if right == 'Y':
textfiles = open(filename, 'a+')
print "text is limited to 3 lines"
line1 = raw_input('\n')
line2 = raw_input()
line3 = raw_input()
print "\nSaving..."
textfiles.write(line1)
textfiles.write('\n')
textfiles.write(line2)
textfiles.write('\n')
textfiles.write(line3)
textfiles.write('\n')
print "\nSaved!"
textfiles.close()
else:
print "Ok have a nice day"
elif entry == 9:
print "Deleting the file..."
try:
os.remove(filename)
except OSError, e: #if failed, report it back to the user
print ("Error: %s - %s." % (e.filename, e.strerror))
print "Done, deleted."
else:
print "Error! wrong entry"
print '\n'
menu()
else:
print "\nyou have entered a wrong input"
print '\n'
menu()
menu()
Dies ist die Ausgabe, die es
1 eingeben, um neue Datei oder 2
Geben Sie den Namen der Datei zu verwenden bestehende gibt:
Test
Drücken Sie 7, um Text in diese Datei einzufügen, 8, um den Inhalt von th zu kürzen ist Datei oder 9 um diese Datei zu löschen: 8
Fehler! falsche Eingabe
eingeben 1 neue Datei oder 2 erstellen bestehende
Jede Hilfe zu verwenden, wie diese Arbeit zu machen?
Sie müssen 'entry' zu einem' int' vor Ihrem conditionals konvertieren, da sonst die Vergleiche werden nie passieren. Alternativ, wenn Ihre Bedingungen etwas wie "if entry == '7':" wären, würde das auch funktionieren. – JCVanHamme
sys und argv werden nicht benötigt. Wenn Sie den Dateinamen wirklich aus der Liste der Argumente lesen möchten, müssen Sie folgendes verwenden: 'filename = argv [1]'. Siehe: https://docs.python.org/3.5/library/sys.html –
danke JCVanHamme, aber es funktioniert im Falle des Halters, warum kann es dann nicht für die Eingabe arbeiten? – ebi