我使用以下代码将文件拆分为数百个不同的文件,每个文件有16行。现在我想多次运行此代码,并在单独的文件夹中读取输入文件和写入输出,而不仅仅是在当前文件夹中。现在我将代码运行为:
for i in {1..10}; do python split.py < folder${i}/input.txt ; done
但我想做点什么:
with open("ratio-{}.txt".format(i), 'w') as File:
并将这些文件写入相应的文件夹中。我可以从不同的文件夹中读取输入文件,但问题是输出文件是在我运行命令的目录中写入和覆盖的。我不知道如何在代码中解决此问题{。}}。
这是我的简短代码:
#!/usr/bin/env python
from __future__ import print_function
import sys, os
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
def convNotation(x):
if isinstance(x, float):
s = str(x)
else:
s = x
return s.replace('e', "*^")
Values = (Line.strip() for Line in sys.stdin)
Data = list(grouper(Values, 16, 0.0))
for i in range(len(Data)):
Conf = Data[i]
with open("ratio-{}.txt".format(i), 'w') as File:
for x in Conf:
print(x, file=File)
答案 0 :(得分:0)
你可以使用
f = open('output.txt','w')
print >>f, "output text"
答案 1 :(得分:0)
我假设您在* .txt格式的同一目录中拥有所有输入。 您需要创建新的顺序目录并将输出放在那里。您可以尝试在shell脚本中运行代码,而不是更改python代码。
伪代码看起来像这样:
for filename in /Directory_to_input/*.txt; do
for ((i=0; i<=10; i++)); do
mkdir ./myfolder$i
python split.py < input.txt
done
for ((j=0; j<=10; j++)); do
mv "output$j.txt" myfolder$j/
done
done
答案 2 :(得分:0)
确定。我想我现在明白了。我可以这样做:
for i in {9..13}; do (cd t${i}/m0/ && python /Users/hunululu/Projects/codes/convert-to-math.py < q1f.txt); done
谢谢大家。