Я конвертирую некоторые скрипты Python, написанные в среде Windows, для работы в Unix (Red Hat 5.4), и у меня возникают проблемы с преобразованием строк, связанных с путями к файлам. В Windows я обычно читаю все файлы .txt в каталоге, используя что-то вроде:
pathtotxt = "C:\\Text Data\\EJC\\Philosophical Transactions 1665-1678\\*\\*.txt"
for file in glob.glob(pathtotxt):
Кажется, можно использовать метод glob.glob() и в Unix, поэтому я пытаюсь реализовать этот метод, чтобы найти все текстовые файлы в каталоге с названием «источник», используя следующий код:
#!/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"
to
pathtosource = "/source/*.txt"
а затем запустите код из каталога /hill, но это не решило мою проблему. Знают ли другие, как я могу читать текстовые файлы в исходном каталоге? Я был бы признателен за любые идеи, которые могут предложить другие.
РЕДАКТИРОВАТЬ: Если это уместно, дерево каталогов /afs/, упомянутое выше, расположено на удаленном сервере, на который я подключаюсь по ssh через Putty. Я также использую файл test.job для qsub скрипта Python выше. (Это все, чтобы подготовиться к отправке заданий в кластерную систему SGE.) Сценарий test.job выглядит следующим образом:
#!/bin/csh
#$ -M [email protected]
#$ -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`"