我正在将我在 Windows 环境中编写的一些 Python 脚本转换为在 Unix(Red Hat 5.4)中运行,并且在转换处理文件路径的行时遇到了麻烦。在 Windows 中,我通常使用以下方式读取目录中的所有 .txt 文件:
pathtotxt = "C:\\Text Data\\EJC\\Philosophical Transactions 1665-1678\\*\\*.txt"
for file in glob.glob(pathtotxt):
似乎也可以在 Unix 中使用 glob.glob() 方法,所以我正在尝试实现此方法以使用以下代码在名为“source”的目录中查找所有文本文件:
#!/usr/bin/env python
import commands
import sys
import glob
import os
testout = open('testoutput.txt', 'w')
numbers = [1,2,3]
for number in numbers:
testout.write(str(number + 1) + "\r\n")
testout.close
sourceout = open('sourceoutput.txt', 'w')
pathtosource = "/afs/crc.nd.edu/user/d/dduhaime/data/hill/source/*.txt"
for file in glob.glob(pathtosource):
with open(file, 'r') as openfile:
readfile = openfile.read()
souceout.write (str(readfile))
sourceout.close
当我运行此代码时,testout.txt 文件按预期出现,但 sourceout.txt 文件为空。我认为如果我改变线路,问题可能会解决
pathtosource = "/afs/crc.nd.edu/user/d/dduhaime/data/hill/source/*.txt"
至
pathtosource = "/source/*.txt"
然后从 /hill 目录运行代码,但这并没有解决我的问题。其他人知道我如何能够读取源目录中的文本文件吗?对于其他人可以提供的任何见解,我将不胜感激。
编辑:如果相关,上面引用的目录 /afs/ 树位于我通过 Putty SSH 进入的远程服务器上。我还使用 test.job 文件来 qsub 上面的 Python 脚本。(这一切都是为了让自己在 SGE 集群系统上提交作业。) test.job 脚本如下所示:
#!/bin/csh
#$ -M dduhaime@nd.edu
#$ -m abe
#$ -r y
#$ -o tmp.out
#$ -e tmp.err
module load python/2.7.3
echo "Start - `date`"
python tmp.py
echo "Finish - `date`"