Чтение и запись нескольких файлов файлов в python? [Дубликат]

Это звучит как хорошая задача описания технологии W3C XPath . Легко выразить такие запросы, как «вернуть все href атрибуты в тегах img, которые вложены в elements». Не являясь баффом PHP, я не могу сказать вам, в какой форме XPath может быть доступен. Если вы можете вызвать внешнюю программу для обработки HTML-файла, вы сможете использовать версию командной строки XPath. Для быстрого ввода см. http://en.wikipedia.org/wiki/XPath .

9
задан Andrea Dusza 3 January 2016 в 21:51
поделиться

6 ответов

Я думаю, что вы пропустите, как получить все файлы в этом каталоге. Для этого используйте модуль glob. Вот пример, который будет дублировать все файлы с расширением * .txt в файлы с расширением * .out

import glob

list_of_files = glob.glob('./*.txt')           # create the list of file
for file_name in list_of_files:
  FI = open(file_name, 'r')
  FO = open(file_name.replace('txt', 'out'), 'w') 
  for line in FI:
    FO.write(line)

  FI.close()
  FO.close()
9
ответ дан Mapad 26 August 2018 в 03:38
поделиться
import sys

# argv is your commandline arguments, argv[0] is your program name, so skip it
for n in sys.argv[1:]:
    print(n) #print out the filename we are currently processing
    input = open(n, "r")
    output = open(n + ".out", "w")
    # do some processing
    input.close()
    output.close()

Затем назовите его следующим образом:

./foo.py bar.txt baz.txt
11
ответ дан Matthew Scharley 26 August 2018 в 03:38
поделиться

Комбинированный ответ, включающий каталог или конкретный список аргументов имен файлов:

import sys
import os.path
import glob

def processFile(filename):
    fileHandle = open(filename, "r")
    for line in fileHandle:
        # do some processing
        pass
    fileHandle.close()

def outputResults(filename):
    output_filemask = "out"
    fileHandle = open("%s.%s" % (filename, output_filemask), "w")
    # do some processing
    fileHandle.write('processed\n')
    fileHandle.close()

def processFiles(args):
    input_filemask = "log"
    directory = args[1]
    if os.path.isdir(directory):
        print "processing a directory"
        list_of_files = glob.glob('%s/*.%s' % (directory, input_filemask))
    else:
        print "processing a list of files"
        list_of_files = sys.argv[1:]

    for file_name in list_of_files:
        print file_name
        processFile(file_name)
        outputResults(file_name)

if __name__ == '__main__':
    if (len(sys.argv) > 1):
        processFiles(sys.argv)
    else:
        print 'usage message'
0
ответ дан michaeljoseph 26 August 2018 в 03:38
поделиться

Недавно я узнал о команде os.walk (), и это может помочь вам здесь. Это позволяет вам спускаться по древовидной структуре каталога.

import os
OUTPUT_DIR = 'C:\\RESULTS'
for path, dirs, files in os.walk('.'):
    for file in files:
        read_f = open(os.join(path,file),'r')
        write_f = open(os.path.join(OUTPUT_DIR,file))

        # Do stuff
1
ответ дан monkut 26 August 2018 в 03:38
поделиться
from pylab import * 
import csv 
import os 
import glob 
import re 
x=[] 
y=[]

f=open("one.txt",'w')

for infile in glob.glob(('*.csv')):
    #   print "" +infile
    csv23=csv2rec(""+infile,'rb',delimiter=',')
    for line in csv23:      
        x.append(line[1])
        #  print len(x)
    for i in range(3000,8000):
        y.append(x[i])
    print ""+infile,"\t",mean(y)
    print >>f,""+infile,"\t\t",mean(y)
    del y[:len(y)]
    del x[:len(x)]
0
ответ дан Pierre GM 26 August 2018 в 03:38
поделиться

Вы можете найти полезный модуль fileinput . Он предназначен именно для этой проблемы.

6
ответ дан Tautvydas 26 August 2018 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: