Как открыть каждый файл в папке?
у меня есть скрипт на python parse.py, который в скрипте открывает файл, скажем file1, а затем делает что-то, возможно, распечатывает общее количество символов.
filename = 'file1'
f = open(filename, 'r')
content = f.read()
print filename, len(content)
прямо сейчас, я использую stdout, чтобы направить результат в мой выходной файл-output
python parse.py >> output
тем не менее, я не хочу делать этот файл по файлу вручную, есть ли способ позаботиться о каждом файле автоматически? Как
ls | awk '{print}' | python parse.py >> output
тогда проблема в том, как я могу прочитать имя файла из стандартев?
или уже есть некоторые встроенные функции для выполнения ls и такой работы легко?
спасибо!
6 ответов:
вы можете перечислить все файлы в текущем каталоге, используя:
import os for filename in os.listdir(os.getcwd()): # do your stuffили вы можете перечислить только некоторые файлы, в зависимости от шаблона файла с помощью
globмодуль:import glob for filename in glob.glob('*.txt'): # do your stuffэто не должен быть текущий каталог вы можете перечислить их в любом пути вы хотите:
path = '/some/path/to/file' for filename in os.listdir(path): # do your stuff for filename in glob.glob(os.path.join(path, '*.txt')): # do your stuffили вы даже можете использовать трубу, как вы указали, используя
fileinputimport fileinput for line in fileinput.input(): # do your stuffа затем использовать его с трубопроводы:
ls -1 | python parse.py
вы должны попробовать использовать ОС.гуляй
yourpath = 'path' import os for root, dirs, files in os.walk(yourpath, topdown=False): for name in files: print(os.path.join(root, name)) stuff for name in dirs: print(os.path.join(root, name)) stuff
вы можете просто использовать модуль ОС сделать так:
- список всех файлов в папке
- сортировка файлов по типу файла, имя файла и т. д.
вот простой пример:
import os #os module imported here location = os.getcwd() # get present working directory location here counter = 0 #keep a count of all files found csvfiles = [] #list to store all csv files found at location filebeginwithhello = [] # list to keep all files that begin with 'hello' otherfiles = [] #list to keep any other file that do not match the criteria for file in os.listdir(location): try: if file.endswith(".csv"): print "csv file found:\t", file csvfiles.append(str(file)) counter = counter+1 elif file.startswith("hello") and file.endswith(".csv"): #because some files may start with hello and also be a csv file print "csv file found:\t", file csvfiles.append(str(file)) counter = counter+1 elif file.startswith("hello"): print "hello files found: \t", file filebeginwithhello.append(file) counter = counter+1 else: otherfiles.append(file) counter = counter+1 except Exception as e: raise e print "No files found here!" print "Total files found:\t", counter
теперь вы не только перечислили все файлы в папке, но и отсортировали их (необязательно) по имени запуска, типу файла и другим. Просто теперь повторите каждый список и сделайте свой материал.
Простое Решение
если вы хотите просто открыть все файлы в корневом каталоге. Я сталкивался с этой проблемой много раз, поэтому я создал простой в использовании модуль для Python 3.5 и Python 2.7. Если ваша версия Python не поддерживается просто спросите меня на GreyCadet IRC и я добавлю поддержку.
установка модуля
pip install filemapperиспользование
рассмотрим структуру каталогов, как это и то main.py это ваш код.
-Program -resources nouns.txt config.dat help.txt main.pyсодержание main.py
import filemapper as fm all_files = fm.load('resources') # fm.load('resources','w') will open in write mode for f in all_files: for i in fm.read(f):print iэто позволит распечатать строки каждого файла в папке ресурсов. Вы также можете пройти любой режим.
делать больше
если вы хотите сделать больше, чем просто открыть файлы с помощью этого модуля, то посетите filemapper Страница GitHub для более подробной информации.
Я искал этот ответ:
import os,glob folder_path = '/some/path/to/file' for filename in glob.glob(os.path.join(folder_path, '*.htm')): with open(filename, 'r') as f: text = f.read() print (filename) print (len(text))вы также можете выбрать '*.txt ' или другие концы вашего имени файла
import pyautogui import keyboard import time import os import pyperclip os.chdir("target directory) cwd=os.getcwd() files=[] for i in os.walk(cwd): for j in i[2]: files.append(os.path.abspath(j)) os.startfile("C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Acrobat.exe") time.sleep(1) for i in files: print(i) pyperclip.copy(i) keyboard.press('ctrl') keyboard.press_and_release('o') keyboard.release('ctrl') time.sleep(1) keyboard.press('ctrl') keyboard.press_and_release('v') keyboard.release('ctrl') time.sleep(1) keyboard.press_and_release('enter') keyboard.press('ctrl') keyboard.press_and_release('p') keyboard.release('ctrl') keyboard.press_and_release('enter') time.sleep(3) keyboard.press('ctrl') keyboard.press_and_release('w') keyboard.release('ctrl') pyperclip.copy('')
Comments