Python IOError: Fil ikke åbne til skrivning og globalt navn ‘w’ er ikke defineret

Jeg forsøger at skrive en lille procedure, der skriver (append ville være endnu bedre) en linje i en fil med Python, som denne:

def getNewNum(nlist):
    newNum = ''
    for i in nlist:
        newNum += i+' ' 
    return newNum

def writeDoc(st):
    openfile = open("numbers.txt", w)
    openfile.write(st)

newLine =  ["44", "299", "300"]

writeDoc(getNewNum(newLine))

Men når jeg kører dette, får jeg fejlen:

openfile = open("numbers.txt", w)
NameError: global name 'w' is not defined

Hvis jeg taber “w” paremeter, får jeg denne fejl:

line 9, in writeDoc
    openfile.write(st)
IOError: File not open for writing

Jeg efter præcis (håber jeg), hvad er her.

Det samme sker når jeg prøver at tilføje den nye linje. Hvordan kan jeg løse det?

Din getNewNum funktion skal bare være ' '.join(newLine).

OriginalForfatteren craftApprentice | 2012-07-03

2 svar

  1. 24

    Problemet er i open() opkald i writeDoc(), at fil-tilstand specifikation er ikke korrekt.

    openfile = open("numbers.txt", w)
                                   ^

    Den w skal have (et par enkelt eller dobbelt) anførselstegn omkring det, dvs,

    openfile = open("numbers.txt", "w")
                                    ^

    At citere fra docs re-fil-tilstand:

    Det første argument er en streng, der indeholder filnavnet.
    Det andet argument er en anden string, der indeholder et par tegn
    beskriver den måde, som filen vil blive brugt.

    Re: “Hvis jeg taber “w” paremeter, får jeg denne fejl: ..IOError: Fil ikke åbne til skrivning”

    Dette er fordi, hvis ingen fil-tilstand er angivet en default værdi er 'r'ead, som forklarer besked om at filen ikke er åben for “skriftlig”, det er blevet åbnet for “læsning”.

    Se denne Python-doc for mere information om Læse/Skrive filer og for gyldig tilstand specifikationer.

    D ‘ oh! Kan ikke tro, jeg har været ved hjælp af Python for så længe og for at jeg fortsat gøre dumme begår en brøler som denne (og så er nødt til at se op, hvad der er galt. Jeg endte med at udelade mode helt.)

    OriginalForfatteren Levon

  2. 2

    Er det muligt at tilføje data til en fil, men du er i øjeblikket forsøger at indstille mulighed for at skrive til filen, som vil tilsidesætte en eksisterende fil.

    Det første argument er en streng, der indeholder filnavnet. Den anden
    argumentet er en anden streng, der indeholder et par tegn, der beskriver den
    måde, som filen vil blive brugt. mode kan være “r”, når den fil, vil
    kun læses, ‘w’ for blot at skrive (en eksisterende fil med det samme
    navn, vil blive slettet), og ” a ” åbner fil for at tilføje; data
    skrevet til filen, der automatisk føjes til slutningen. ‘r+’ åbner
    filen for både læsning og skrivning. Den tilstand argument er valgfrit; “r”
    vil blive antaget, hvis det er udeladt.

    Hertil kommer, at implementeringen af resultaterne i open() metode på udkig efter en parameter, der er anmeldt som w. Dog, hvad du ønsker, er at passere string værdi for at angive tilføje option, der er angivet med en indkapslet i anførselstegn.

    openfile = open("numbers.txt", "a") 

    OriginalForfatteren RobB

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *