python - 在多个文件上运行 python 脚本的问题

标签 python linux bash shell

我在 Linux (Ubuntu 11.10) 机器上;伯恩再次 shell 。

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

根据我的 shell 脚本编写经验和在该论坛上关注其他人的经验,我使用以下方法遍历文件目录:

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 脚本时,输出文件具有正确的内容(脚本执行的计算是正确的)。

使它变得更复杂的是相同的 shell 方法(for 循环)在我同事拥有的 Mac OS X 中工作得很好。

问题出在哪里?我是否遗漏了一些关于 Linux shell 的非常基础的东西?可能是语法错误?

我们将不胜感激。

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

最佳答案

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

for f in path/to/data_directory/*; do
  path/to/pythonscript.py "$f" -min 1 > "path/to/out_directory/$f"
done

关于python - 在多个文件上运行 python 脚本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928099/

相关文章:

linux - 为 PHP-FPM 配置 IPtables

linux - 将命令输出存储到 shell 脚本中的数组

linux - tmux - 禁用连接/分离时的蜂鸣声

python - Pandas:删除包含整数和字符串的混合类型系列中的所有字符串组件

python - 运算符不存在 : character varying + character varying

python - numpy 中的逻辑加法

python - 执行跨多个表的查询的最佳 django 方法是什么?

linux - 递归地chmod

linux - Bash:从主机列表中读取,在添加内容时创建/触摸文件

php - 无法从 php 执行 ttf2afm