Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python脚本概括为在目录中的所有文件上运行_Python - Fatal编程技术网

将python脚本概括为在目录中的所有文件上运行

将python脚本概括为在目录中的所有文件上运行,python,Python,我有以下python脚本: with open('ein.csv', 'r') as istr: with open('aus.csv', 'w') as ostr: for line in istr: line = line.rstrip('\n') + ',1' print(line, file=ostr) 如何将其推广到在一个目录中的所有文件上运行,并为每个文件输出一个单独的文件 可能有这样一个功能: for phy

我有以下python脚本:

with open('ein.csv', 'r') as istr:
    with open('aus.csv', 'w') as ostr:
        for line in istr:
            line = line.rstrip('\n') + ',1'
            print(line, file=ostr)
如何将其推广到在一个目录中的所有文件上运行,并为每个文件输出一个单独的文件

可能有这样一个功能:

for phyle in list_files(.): 
    with open(phyle, 'r') as istr:
        with open('ausput_xyz.csv', 'w') as ostr:
            for line in istr:
                line = line.rstrip('\n') + ',1'
                print(line, file=ostr)

def list_files(path):
    # returns a list of names (with extension, without full path) of all files 
    # in folder path
    files = []
    for name in os.listdir(path):
        if os.path.isfile(os.path.join(path, name)):
            files.append(name)
    return files 

只需将代码放入函数并调用它:

def process(infilename):
    outfilename = os.path.splitext(infilename)[0] + "-out.csv" 
    with open(infilename, 'r') as istr:
        with open(outfilename, 'w') as ostr:
            for line in istr:
                line = line.rstrip('\n') + ',1'
                print(line, file=ostr)

def process_files(path):
    for name in os.listdir(path):
        if os.path.isfile(os.path.join(path, name)):
            process(name)
在包含输入文件“abc.csv”、“xyz.csv”的目录中,此代码将创建名为“abc out.csv”和“xyz out.csv”的输出文件


请注意,
os.listdir(path)
在执行期间只调用一次,因此要处理的文件列表将不包括新创建的输出文件

只需将代码放入函数中并调用它:

def process(infilename):
    outfilename = os.path.splitext(infilename)[0] + "-out.csv" 
    with open(infilename, 'r') as istr:
        with open(outfilename, 'w') as ostr:
            for line in istr:
                line = line.rstrip('\n') + ',1'
                print(line, file=ostr)

def process_files(path):
    for name in os.listdir(path):
        if os.path.isfile(os.path.join(path, name)):
            process(name)
在包含输入文件“abc.csv”、“xyz.csv”的目录中,此代码将创建名为“abc out.csv”和“xyz out.csv”的输出文件


请注意,
os.listdir(path)
在执行期间只调用一次,因此要处理的文件列表将不包括新创建的输出文件

首先,作为处理
csv
文件的一种更具python风格的方法,您最好使用
csv
模块,并使用
with
语句打开文件,在块结束时自动关闭文件对象。并使用
os.walk()
函数迭代特定路径的文件和目录:

import csv
import os

for path_name, dirs, files in os.walk('relative_path'):
    for file_name in files:
        with open(file_name) as inp,open('{}.csv'.format(file_name),'wb') as out:
             spamwriter = csv.writer(out, delimiter=',')
             for line in inp:
                 spamwriter.writerow(line) # or line.split() with a specific delimiter
请注意,如果脚本与文件目录不在同一路径中,则可以在打开文件名时将路径添加到文件名的前导

with open(path_name+'/'+file_name),...

首先,作为处理
csv
文件的一种更具python风格的方式,您最好使用
csv
模块,并使用
with
语句打开文件,从而在块结束时自动关闭文件对象。并使用
os.walk()
函数迭代特定路径的文件和目录:

import csv
import os

for path_name, dirs, files in os.walk('relative_path'):
    for file_name in files:
        with open(file_name) as inp,open('{}.csv'.format(file_name),'wb') as out:
             spamwriter = csv.writer(out, delimiter=',')
             for line in inp:
                 spamwriter.writerow(line) # or line.split() with a specific delimiter
请注意,如果脚本与文件目录不在同一路径中,则可以在打开文件名时将路径添加到文件名的前导

with open(path_name+'/'+file_name),...

你到底停留在哪一部分呢?我可以这样计算:
os.listdir(“somedirectory”)
但我想用短代码组件处理它们,所以?问题是什么?我不知道怎么做?你是想把它们都写到同一个文件中,还是让每个文件都输出到它自己的输出文件中?你到底坚持哪一部分?我可以这样计算:
os.listdir(“somedirectory”)
但我想用那个短代码组件来处理它们,所以?问题是什么?我不知道怎么做?你是想把它们都写到同一个文件中,还是让每个文件都输出到自己的输出文件中?这太棒了-特别是关于调用
os.listdir
,但是-我需要调用上面或下面的函数来执行代码,不是吗?你需要调用
process\u文件(“/some/directory”)
来完成这项工作。这太棒了-特别是关于调用
os.listdir
,但是-我需要调用上面或下面的函数来执行代码,不是吗?你需要调用
处理文件(/some/directory”)
要做这项工作。@s.matthew.english抱歉,输入错误,应该是
writer
再次检查。@s.matthew.english抱歉输入错误,应该是
writer
再次检查。