更改python代码以在不同文件夹中写入shell的输出

时间:2016-04-05 03:20:42

标签: python shell

我使用以下代码将文件拆分为数百个不同的文件,每个文件有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)

3 个答案:

答案 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

谢谢大家。