2017-03-21 2 views
0

Ich versuche, eine Folge von Dateien mit textscan zu lesen, aber ich erhalte immer diese Fehlermeldung:Ungültige Dateikennung. Verwenden Sie fopen eine gültige Dateikennung zu erzeugen

Error using textscan Invalid file identifier. Use fopen to generate a valid file identifier.

Mein Code ist:

fd = fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name],'rt'); 
line = textscan(fd, '%s %f %d %f %f %f %f %f %f %f %f %f %f %f %f'); 

Als ich versuchen, die Ausgabe von ['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name] zu sehen, es den Pfad korrekt zurückgibt:

D:\Thesis\Data\vedai_co_75_25\train\labels\00000000.png

auch Befehl fopen(D:\Thesis\Data\vedai_co_75_25\train\labels\00000000.png) kehrt oder oder usw.

Aber Befehl fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name]) kehrt -1.

Wie kann ich das schaffen?

+1

nur als Referenz, auf meinem System beiden Befehle funktionieren und nicht zurück ** - 1 ** (mit oder ohne String-Verkettung). Ich bin jedoch auf Linux und es scheint, dass Sie auf Windows sind. – UJIN

+0

@UJIN ja ich benutze Windows. Der zweite Befehl befindet sich in einer ** for-Schleife **, also kann ich ihn nicht wie die erste verwenden. –

+0

Ja, ich verstehe, dass Sie die zweite Version verwenden müssen. Leider kann ich das Verhalten, das Sie erleben, nicht reproduzieren, beide funktionieren gut für mich. Sie müssen warten, wer kann, und wahrscheinlich, wer Windows verwendet. – UJIN

Antwort

2

Das Problem besteht möglicherweise darin, dass Sie versuchen, eine PNG-Datei im Textmodus zu öffnen.
Versuchen fd = fopen(file_name, 'r') oder in Ihrem Beispiel:

fd = fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name],'r'); 

unter Windows die falschen Dateien im Textmodus öffnen können Probleme verursachen. Die Hilfe von fopen Staaten:

(On Unix, text and binary mode are the same, so this has no effect. On PC systems this is critical.)

+0

Ja, das muss definitiv so sein. Ich war auch etwas verwirrt, als ich das 'rt' in 'fopen' für ein Bild sah, aber dann habe ich auf Ubuntu getestet und es gab keinen Fehler zurück. – UJIN

+0

Ja, danke fürs Testen unter Linux. Das hat mich zu meiner Annahme geführt. – Richard

+0

Es tut mir wirklich leid für diesen Fehler. Ich hätte 'txtfiles' anstatt' files' verwenden sollen. Das Problem ist gelöst. Danke vielmals –

Verwandte Themen