2014-01-29 3 views
1

Я пытаюсь прочитать имя файла хранится в виде строки в файле данных. Нет проблем. Если я передам его genfromtxt, я получаю ошибку «IOErr: Z: \ Python \ Rb input.txt не найден». если я поместил имя файла в genfromtxt явно, он работаетGenfromtxt имя файла

это не с ошибкой «IOErr: Z: \ Python \ Rb input.txt не найден».

import numpy 
modat = open('z:\python\mot1 input.txt') # open file with names in 
rbfile = modat.readline()    # read data file name 
print rbfile        # print the file name 
rb = numpy.genfromtxt(rbfile, delimiter =',') 
print rb 

но его работа

import numpy 
modat = open('z:\python\mot1 input.txt') # open file with names in 
rbfile = modat.readline()    # read data file name 
print rbfile 
rb = numpy.genfromtxt('z:\python\Rb input.txt', delimiter =',') 
print rb 

заявление 2 печати дает

%run "c:\users\ian\appdata\local\temp\tmpkiz1n0.py" 
Z:\Python\Rb input.txt 

[[ 2. 10.] 
[ 3. 11.] 
[ 5. 13.] 
[ 10. 15.] 
[ 15. 16.] 
[ 20. 16.] 
[ 30. 22.]] 

Это, кажется, делать с теперь передается строка - любые предложения, пожалуйста,

+0

Пробовали ли вы его с 'rbfile.rstrip()'? –

ответ

3

rbfile имеет символ конца строки (EOL) (например, \r\n) в конце. Зачистите его:

rb = numpy.genfromtxt(rbfile.strip(), delimiter =',') 

Кстати, для отладки проблем со строками, часто более полезно для печати repr строки, чем сама строка:

print(repr(rbfile)) 

, поскольку В репрезентации более четко отображаются символы, такие как '\r\n'.


file.readline() не удаляет EOF символы:

f.readline() reads a single line from the file; a newline character (\n) is left at the end of the string, and is only omitted on the last line of the file if the file doesn’t end in a newline. This makes the return value unambiguous;

+0

Magic! Я много лет перепутал с этим, спасибо за помощь – user3202419

Смежные вопросы