-2
Я хочу открыть файл из каталога с генератором python - это csv-файл, а в каталоге около 8 csv-файлов. Да, я знаю, я также мог бы использовать csv-lib, но мне интересно, могу ли я сделать это без lib.Открыть файл с генератором - Python
Вот мой код до сих пор:
vz = glob.glob("home/user/*csv")
data = [ open(i, 'r') for i in vz if "some_file_name" in i ]
После того, что я получаю:
print data
==> [<open file '/home/user/some_file_name.csv', mode 'r' at 0x1eb78a0>]
for i in data.readlines():
print i
==> 'list' object has no attribute 'readlines'
Любые идеи?
Есть ли причина, по которой вы используете 'glob', чтобы найти свой файл, а не называть его напрямую? Почему бы не просто «открыть» («home/user/some_file_name.csv», «r») '? Кроме того, редко возникает необходимость вызывать 'readlines' в файле, так как они уже итерабельны. Просто зациклируйте на объект файла напрямую. – Blckknght
Есть причина: я использую 'argv' для запуска скрипта с двумя аргументами. С помощью этих аргументов я ищу нужные файлы. Это что-то вроде 'python script.py arg1 arg2', а файл I searchin for имеет имя' filename_arg1_arg2', поэтому я делаю 'if 'filename_% s_% s"% (arg1, arg2) в vz: ... ' .. – jwi
Вы ожидаете получить больше одного матча, когда-либо? Или вам нужно поддерживать неточные соответствия (например, с дополнительными символами)? Если вы действительно ищете только один файл с именем '" filename_arg1_arg2.csv "(где' arg1' и 'arg2' - ваши аргументы командной строки), просто используйте' open ("filename _ {} _ {}. Csv" .format (arg1, arg2)) 'или аналогичный код'% s', который вы уже используете в своем тесте. Не нужно глотать и перебирать все CSV-файлы, если вы знаете все имя. Работа с одним файлом, вероятно, устранит проблему, с которой вы столкнулись (что, вероятно, правильно описан ниже). – Blckknght