2017-04-26 2 views
0

Ich bin neu in der Programmierung vor allem Python. Aber ich brauche dieses Programm, um zu Forschungszwecken zu arbeiten. Der Fehler sieht wie folgt aus:Python: TypeError: Coercing zu Unicode: brauche String oder Puffer, Datei gefunden

('read db data from ==>', u'C://Users//DBF.txt', 'and input file data from ==>', u'C://Users//IF.txt') 
<open file 'C://Users//OpPanda_S_R', mode 'r' at 0x0000000006309030> 
Traceback (most recent call last): 
File "C:/Users/Test.py", line 48, in <module> 
if op.exists(f) & op.getsize(f): 
File "C:\Users\genericpath.py", line 26, in exists 
os.stat(path) 
TypeError: coercing to Unicode: need string or buffer, file found 

Process finished with exit code 1 

Dies ist der relevante Teil des Codes:

f = open(str(outputFileGroupName)+"_"+str(group)) 
print f 
if op.exists(f) & op.getsize(f)>0: 
    if globals()["same_market_"+str(group)+"_file"].shape[0] > 0: globals()["same_market_"+str(group)+"_file"].to_csv(outputFileGroupName, index=False,mode='a',header=False) 
     pass 
if ~contolGroupValidityCheck: 
    new_entry_occured.append(diff_market_plan_file).to_csv(globals()[str(outputFileGroupName)+"_tmp"], index=False) 

ich diese Beiträge haben überprüfen, TypeError: coercing to Unicode: need string or buffer, file found Python TypeError: coercing to Unicode: need string or buffer, file found TypeError: coercing to Unicode: need string or buffer, dict found Python writing to CSV... TypeError: coercing to Unicode: need string or buffer, file found, aber ich konnte nicht geeignet finden Lösung.

Ich wäre sehr froh, wenn jemand einem Noob hier helfen könnte. Ich bin sicher, dass Sie "Profis" schon das Problem bekommen, wenn Sie es nur anschauen. Kann mir jemand sagen, warum ich diesen speziellen Fehler in Zeile 48 bekomme? Ich kann sehen, dass in dem besagten Verzeichnis die Datei erstellt wurde, ich überprüfe nur, ob die Datei existiert und ob ihre Länge größer als 0 ist dementsprechend entsprechende Aussagen treffen.

Antwort

0
f = open(str(outputFileGroupName)+"_"+str(group)) 

An diesem Punkt ist f ein Griff auf die Datei. os.path.exists und os.path.getsize erwarten Sie eine Dateiname.

So überprüfen Sie zuerst Existenz/Größe mit dem Name, und öffnen Sie es danach.

name = str(outputFileGroupName)+"_"+str(group) 
if op.exists(name) and op.getsize(name)>0: 
    f = open(name) 

und logische & nicht für mehrere Bedingungen verwenden, wie Kurzschluss nicht funktionieren würde und wenn Datei mit dem Namen nicht vorhanden ist, wird die getsize noch und Sie ein IOError bekommen. Verwenden Sie and

Beiseite: gleiche Sache für if ~contolGroupValidityCheck in Ihrem Code. Verwenden Sie not. Reservieren Sie ~, & ... für den bitweisen Betrieb, nicht logische Operationen.

+0

Fabre: Vielen Dank, Mann. Der Fehler ist behoben. – Rowen

+0

@Fabre: Kann ich dir noch einen Gefallen tun? In dieser Zeile: 'globals [" diff_market _ "+ str (Gruppe) +" _ file "] = input_data [input_data [inputFileRootProfile] .isin (" diff_market _ "+ str (Gruppe) +" _ db "[dbFileRootProfile])]' i ' Ich bekomme einen Fehler: 'TypeError: String-Indizes müssen ganze Zahlen sein, nicht Unicode'. Kannst du mir helfen? – Rowen

+0

Ich vermute, dass Sie eine Zeichenfolge als Listenindex übergeben. Zerlege deine Linie, um zu sehen, welche. Es gibt 3 '[]' Zugriffe in Ihrer Zeile, es ist schwierig herauszufinden, was falsch ist. –

Verwandte Themen