#python
#python
Вопрос:
Я пытаюсь прочитать содержимое из текстового файла, используя Python3.7
и ниже приведен мой код, и я запускаю программу на RHEL 7
Я экспортировал требуемую переменную среды (т.Е. Sourcepath), и все 3 файла имеют одинаковое содержимое в нем
[sathish@WEB Exercises]$ pwd
/tmp/Exercises
[sathish@WEB Exercises]$ ls -l develop/global/src
total 12
-rw-r--r-- 1 skailas wheel 124 Dec 29 06:51 a.txt_bak
-rw-r--r-- 1 skailas wheel 124 Dec 29 06:54 b.txt
-rw-r--r-- 1 skailas wheel 124 Dec 29 06:53 version.txt
import os
import sys
# Variable used to store file contents
file_contents = None
def readfromfile(filename):
# Check whether the environment variable SourcePath exists
# If not create one and assign a default value
if not os.environ.get("Sourcepath", None):
print("Environment variable Sourcepath does not exists")
print("Create the environment variable and assign default value")
os.environ["Sourcepath"] = "/tmp/Exercises"
print("Sourcepath=", os.environ.get("Sourcepath"), os.getcwd())
print(os.path.join(os.environ["Sourcepath"],"develop","global","src",filename))
try:
fh = open(os.path.join(os.environ["Sourcepath"],"develop","global","src",filename), "r")
if ( os.stat(filename).st_size == 0):
print("File is empty");
else:
# Read the contents from file and store it in a
# global variable file_contents
global file_contents
print("Opened file", filename)
file_contents = fh.read()
print("File contents are", file_contents)
fh.close()
print("File closed")
except FileNotFoundError:
print("File not found for Reading ... Exiting", filename)
sys.exit()
except:
print("Other Error ... Exiting")
sys.exit()
readfromfile('b.txt')
Вывод ошибки
[skailas@WEB Exercises]$ python3.7 fex.py
Environment variable Sourcepath does not exists
Create the environment variable and assign default value
Sourcepath= /tmp/Exercises /tmp/Exercises
/tmp/Exercises/develop/global/src/b.txt
File not found for Reading ... `Exiting b.txt`
Упомянутая выше программа считывает содержимое файла для file a.txt_bak
. Однако, когда я вызываю функцию readfromfile('b.txt') or readfromfile('version.txt')
, она говорит "FILE NOT FOUND ERROR"
Я действительно смущен, почему для ‘a.txt_bak’ это работает и почему он сообщает об ошибке для двух других файлов? Иногда моя программа не считывает содержимое, даже если файл существует по тому же пути
Я делаю что-то не так с fclose() или что я упускаю? Пожалуйста, помогите мне разобраться в проблеме
Комментарии:
1. Сделайте себе одолжение и откройте файлы в качестве контекстного менеджера
2. Ваш вызов
os.stat
используетсяfilename
без каталога; может быть, именно отсюда возникает исключение?3. @Hans Да. Я надеюсь на это. Позвольте мне попытаться проинформировать вас
4. @Hans Вы были правы, os.stat была строкой, вызвавшей проблему. Спасибо, что указали на проблему. Я сходил от этого с ума
5. Спасибо за отзыв, рад, что решил эту проблему.