2014-06-14 2 views
0

Donc, en essayant de créer un fichier en utilisant argv et en essayant de copier ce fichier après, quand j'essaie de l'exécuter, je reçois des erreurs à la ligne 16. C'est à des fins éducatives essayé de ge ce travail, après avoir suivi "Learning python the hard way" ebook.

Error message: 
    file "new_prog.py, line 16, in <module> 
    newfile.write(line1) 
AttributeError: 'str' object has no attribute 'write' 

Script ci-dessous

from sys import argv 
from os.path import exists 

newfile, nyfil = argv 
print "First we erase is incase it already exists, filename is %r." % newfile 

print "We are going to attempt to write a file and copy it." 
newfile = raw_input("New filename: ") 

print "Write the first line of the document" 
line1 = raw_input("First line: ") 
print "Write the second line of the document" 
line2 = raw_input("Second line: ") 
print "Write the last lines, can be coaherent" 
lines = raw_input("last lines: ") 

newfile.write(line1) 
newfile.write("\n") 
newfile.write(line2) 
newfile.write("\n") 
newfile.write(lines) 
newfile.write("End of document") 
newfile.close() 

print "Closing %r for copying" % (newfile) 
print "Checking if the new file exists. %r" % exists(nyfil) 
raw_input("Press a key to continue") 

nyfil = open(newfile, 'w') 
nyfil = write(newfile) 

nyfil.close() 
print "All done, files are printed and copied" 

Nouveau code qui fonctionne, merci.

from sys import argv 
from os.path import exists 

newfile, nyfil = argv 
print "First we erase is incase it already exists, filename is %r." % newfile 

print "We are going to attempt to write a file and copy it." 
newfile = raw_input("New filename: ") 

print "Write the first line of the document" 
line1 = raw_input("First line: ") 
print "Write the second line of the document" 
line2 = raw_input("Second line: ") 
print "Write the last lines, can be coaherent" 
lines = raw_input("last lines: ") 

with open(newfile, 'w') as f: 
    f.write(line1) 
    f.write("\n") 
    f.write(line2) 
    f.write("\n") 
    f.write(lines) 
    f.write("\n") 
    f.write ("End of document") 

print "Closing %r for copying" % (newfile) 
print "Checking if the new file exists. %r" % exists(nyfil) 
raw_input("Press a key to continue") 

with open(newfile, 'w') as f: 
    f.write(nyfil) 

print "All done, files are printed and copied" 
+0

l'erreur pourrait aider –

+0

sry à ce sujet, édité post – user3740983

+0

Pourquoi le tag [tag: makefile]? – Chnossos

Répondre

0

newfile = raw_input("New filename: ")

newfile est une chaîne et non un objet de fichier pour l'erreur est logique. Vous devez faire quelque chose comme:

with open(newfile, "w") as f: 
    f.write(line1) 
    f.write("\n") 
    etc.... 

Je ne suis pas tout à fait sûr de ce que certains de votre code est en train de faire, mais cet exemple montre comment prendre un nom de fichier en tant que ligne de commande cmd et écrire les lignes que vous saisissez à elle:

def write_to_file(newfile): 
    print "You entered filename {}".format(newfile) # string formatting 

    print "We are going to write to a file." 
    newfile = raw_input("New filename: ") 

    print "Write the first line of the document" 
    line1 = raw_input("First line: ") 
    print "Write the second line of the document" 
    line2 = raw_input("Second line: ") 
    print "Write the last lines, can be coaherent" 
    lines = raw_input("last lines: ") 
    with open(newfile, "w") as f: # use with to open files as it closes them automatically 
      f.write(line1) 
      f.write("\n") 
      f.write(line2) 
      f.write("\n") 
      f.write(lines) 
      f.write("End of document") 
    print "Finished writing to {}".format(newfile) 
if __name__ =="__main__": 
    write_to_file(sys.argv[1]) # command line arg 

Enregistrer le script comme foo.py alors exécuté avec python foo.py foo.txt et il va créer et d'écrire votre entrée dans le fichier foo.txt.

Questions connexes