首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在多个文件上运行python脚本时出现的问题

在多个文件上运行python脚本时出现的问题
EN

Stack Overflow用户
提问于 2012-08-13 12:09:32
回答 2查看 288关注 0票数 0

我在Linux (Ubuntu 11.10)机器上;bourne am shell。

我必须使用python脚本处理一个满是文件的目录。我的同事编写了python脚本,我以前一次在一个文件上成功地使用过它。它有两个参数:一个是要处理的文件的路径,用引号括起来;另一个是名为-min的辅助参数,它需要一个整数。此外,该脚本还将写入标准输出。

根据我在shell脚本编写方面的经验,以及在这个论坛上关注其他人的经验,我使用了以下方法来迭代文件目录:

代码语言:javascript
运行
复制
for f in path/to/data_directory/*; do
  path/to/pythonscript.py $f -min 1 > path/to/out_directory/$f;
done

我在out_directory中获得了所需的文件名。每个脚本的内容都是只有python脚本才能编写的内容。也就是说,上面的for循环成功地将文件传递给了脚本。然而,每个文件的内容的性质是完全错误的(因为在计算中脚本所做的是错误的)。当我在data_directory中的一个文件上运行python脚本时,输出文件具有正确的内容(脚本执行的计算是正确的)。

更复杂的是,相同的外壳方法( for循环)在我的同事的makes上也能完美地工作。

问题出在哪里?我是不是遗漏了Linux shell的一些非常基本的东西?也许这是一个语法错误?

任何帮助都将不胜感激。

更新:我只是再次运行了for循环,但并没有将它指向文件的data_directory,而是指向了data_directory中的一个文件。我也遇到了同样的问题-- python脚本没有计算出正确的结果。

EN

回答 2

Stack Overflow用户

发布于 2012-08-13 12:20:26

我看到的唯一问题是文件名可能包含空格-所以你应该引用文件名:

代码语言:javascript
运行
复制
for f in path/to/data_directory/*; do
  path/to/pythonscript.py "$f" -min 1 > "path/to/out_directory/$f"
done
票数 1
EN

Stack Overflow用户

发布于 2012-08-13 12:44:41

我不知道这是否有帮助,但是。

代码语言:javascript
运行
复制
path/to/pythonscript.py $f -min > path/to/out_director/$f

代入到

代码语言:javascript
运行
复制
path/to/pythongscript.py path/to/data_directory/myfile -min 1 > path/out_directory/path/to/data_directory/myfile

脚本应该是

代码语言:javascript
运行
复制
cd path/to/data_directory
for f in *; do
path/to/pythonscript.py $f -min 1 >  path/to/out_directory/$f
done

您运行的是什么版本的bash?

如果你运行这个脚本,你会得到什么?

代码语言:javascript
运行
复制
cd path/to/data_directory
for f in *; do
echo $f > /tmp/$f
done

当然,这应该会给您提供一堆包含它们自己的文件名的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11928099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档