4行のテキストファイルをすべて追加し、5列の出力ファイルを作成したいとします。私のファイルの1つに2つの列があります。私はcsv.readerでそれをやろうとしましたが、正しい結果を得ることができません。この時点で私は、このコードに取り組んでいます: 5つのテキストファイルを列方向に追加する
from os import walk
import csv
mypath = 'C:\\Users\\files to append'
o_data = []
files = []
for (dirpath, dirnames, filenames) in walk(mypath):
files.extend(filenames)
break
print(files)
for afile in files:
file_h=open(afile)
a_list = []
a_list.append(file_h.read())
csv_reader = csv.reader(file_h, delimiter = ' ')
for row in csv_reader:
a_list.append(row[0])
o_data.append((n for n in a_list))
file_h.close()
with open('output.dat', 'w') as op_file:
csv_writer = csv.writer(op_file, delimiter = ' ')
for row in list(zip(*o_data)):
csv_writer.writerow(row)
私の5つのテキストファイル
はdiffernt値で次のようになります。SCALAR
ND 9418
ST 0
TS 45000.34
0.0000
100.02
結果はこのようにする必要があります(4つのヘッダと列の5ナンバー) :
SCALAR SCALAR SCALAR SCALAR
ND 9418 ND 9418 ND 9418 ND 9418
ST 0 ST 0 ST 0 ST 0 ST 0
TS 45000.34 TS 45000.34 TS 45000.34 TS 45000.34
0.0000 1.0000 2.4344 4.5656 81.2123
100.02 123.32 333.85 435.33 987.11
私はどんな感謝してもらいたいです。 2
試みは、私は他の方法でそれを書き換えることしようと試みました。これは私の解決策ですが、正しく機能しません。それは
「output.out」これはコードであるために「output1.out」を変更することはできませんなぜ私が理解することはできません。
輸入OS
を「」」 にすべてのbnecessaryデータを入れてくださいディレクトリ "" "
f = []
for file in os.listdir('C:\\Users\\Append'):
if file.endswith(".dat"):
f.append(file)
print(file)
os.rename(file,"input.dat")
file = file.rsplit('.', 1)[0]
print(file)
with open("output.out", "r") as textfile1, open("input.dat", "r") as textfile2,\
open("output1.out", "w") as out:
for x, y in zip(textfile1, textfile2):
x = x.strip()
y = y.strip()
print("{0} {1}".format(x, y), file = out)
print(fname)
os.rename("input.dat", file+".txt")
os.rename("output1.out", "output.out")
print(f) # just for checking
を:csv_output.writerow(chain.from_iterable(行)) エラー:シーケンスは、それはしてみてください、あなたのPythonのバージョンに依存する場合があります –
を期待'csv_output.writerow(list(chain.from_iterable(row)))' –
はい!できます。私はあなたのやり方を見ます。 THX –