-1

3 つの Excel ファイルを比較するスクリプトを Python で作成しました。このスクリプトを使用したいファイルがたくさんあり、それらを 3 つのグループで使用したいと考えています。これは、これまでのところおおよそ次のようになります。

#!/usr/bin/env python

import sys
import csv

#lots of functions

resultsdir = "."
#bla

filename1=sys.argv[1]
filename2=sys.argv[2]
filename3=sys.argv[3]
out = open(sys.argv[4],"w")

#filename1,filename2,filename3="CNVB_reads.403476","CNVB_reads.403447","CNVB_reads.403478"
#these are the 3 files it uses at the moment

file1=open(resultsdir+"/"+filename1+".csv")
file2=open(resultsdir+"/"+filename2+".csv") 
file3=open(resultsdir+"/"+filename3+".csv")

file1.readline()    
file2.readline()
file3.readline()

#lots of other irrelevant stuff
#the output goes into an excel file as well

私は一般的にプログラミングに慣れていません。私がやりたいことを説明しようとするとき、私が意味を成していることを願っています。どんな助けにも乾杯!

4

1 に答える 1

1

私はglobすべてのファイル名を取得し、それらを並べ替えてから、ループでそれらを通過するために使用します(まさに私がここで答えたように)

# other imports
from glob import glob

# lots of functions

resultsdir = "."
counter = 0
outname = sys.argv[1]
files = sorted(glob(resultsdir+'/*.csv')) # get and sort .csv files
while len(files) >= 3: # Are there another 3 files?
    out = open(outname+'_'+str(counter)+'.csv',"w") # open an output file with an increasing number in name
    counter += 1 # increase output file number
    file1=open(files.pop(0)) # get and remove first file from the list
    file2=open(files.pop(0)) # get the next file from the list (is now the first)
    file3=open(files.pop(0))

    # do something with the files

    # close the files

2番目のオプションは、(コメントで述べたように)使用することです

files = sorted(sys.argv[2:])

ファイルを取得するには、次のようにスクリプトを呼び出す必要があります。

program.py output_name *.csv

次に、プログラムはワイルドカード ( *.csv) に一致するすべてのファイルのリストを引数として取得します。

于 2013-04-30T12:22:17.697 に答える