2015-05-20 3 views
0

Я только что начал изучать Python, и этот вопрос может звучать слишком основательно. У меня есть задача сделать на кучу CSV-файлов, и я написал 4 сценария для них.Связывание вместе 4 скрипта Python

Script1: Слияние всех CSV-файлов в один большой файл.
Script2: Удаляет любые пустые строки в большом файле.
Script3: Выполняет необходимую операцию над большим файлом, чтобы предоставить выходной файл CSV
Script4: Удаляет любые пустые строки в выходном CSV-файле.

Мне было интересно, есть ли у меня все эти 4 скрипта, связанные друг с другом под одним именем, так что, когда я запустил это, он будет по существу выполнять все эти 4 скрипта в последовательном порядке.

Любые предложения по этому вопросу?

Заранее благодарен!

+0

См [этот ответ] (http://stackoverflow.com/questions/1186789/what-is-the-best-way-to-call- а-питон-скриптов из-другого-питон-скрипта). – initall

+0

это [аналогичный вопрос SO] (http://stackoverflow.com/questions/7974849/how-can-i-make-one-python-file-run-another) может помочь –

ответ

1

Вы можете просто объединить все действия в один скрипт:

import csv 
import os 
import glob 

rows = list() 
path_to_files = r'C:/csv-directory' 
file_list = ['file1.csv', 'file2.csv'] 

# Step 1 & 2 - read all files into one big collection 
#    and ignore any blank lines 

# If you have a large list of files: 
# for filename in glob.iglob('{}/*.csv'.format(path_to_files)): 
# with open(filename) as f: 

for filename in file_list: 
    with open(os.path.join(path_to_files, filename)) as f: 
     reader = csv.reader(f, delimiter=',') 
     rows += list(reader) 

# Step 3 & 4 - Perform some operation on the 
#    big CSV file, and provide output 
#    as CSV file 
with open(os.path.join(path_to_files, 'result.csv'), 'w') as f: 
    writer = csv.writer(f, delimiter=',') 
    for row in rows: 
     # do something with row 
     writer.writerow(row) 
+0

Спасибо большое! Но у меня более 40 файлов CSV. Поэтому я думаю, что добавление всех имен в file_list будет утомительной задачей. Кроме того, имена довольно длинные. –

0

Поскольку, по-видимому каждый скрипт сохраняет на диск, вы можете просто запустить:

python script1.py; python script2.py; python script3.py; python script4.py 

из командной строки. Если вы предпочитаете питон скрипт, чтобы сделать это для вас, просто создать скрипт (например wrapper.py) следующим образом:

execfile('script1.py') 
execfile('script2.py') 
execfile('script3.py') 
execfile('script4.py') 

Тогда вы можете просто запустить python wrapper.py из командной строки.

+0

Да, я выполнял каждый скрипт индивидуально до сих пор. Просто попробуем поставить их под одну обертку, чтобы она еще больше уменьшала усилия! Большое спасибо! :) –

0

Пожалуйста, попробуйте это,

os.system

Вы могли бы назвать его с помощью os.system("mergeFiles.py")

или

subprocess модуль Python

или

Пайтона execfile

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