Решено: добавление os.chdir (myArg) разрешило проблему.Ошибка при использовании os.stat - Python
Я получаю сообщение об ошибке при попытке запустить следующий код ни на что иное, кроме моего домашнего каталога или файлов/указаний, которые у меня есть.
FileNotFoundError: [Errno 2] Нет такого файла или каталога:
Я создал файл в корне и сменила владельца на файл с пи: пи (пользователь, запускающий скрипт). Если я укажу этот файл напрямую, он работает, однако, если я запустил скрипт на «/», он не будет читать это или любой другой файл/директив. Я также создал каталог/tempdir_delete/и изменил право собственности на pi: pi .. Если я запустил скрипт специально на «/ tempdir_delete/*», он работает, но если я отойду от *, это не сработает.
Зачем это происходит во всех случаях, кроме/home/pi/или файлов, которые я явно указываю и владею? Он запускает stat как пользователь pi, который предоставляется sudo для выполнения stat. Кроме того, почему я должен указать файл, который я владею явно? Разве он не видит этот файл в корне и работает, потому что я его владею?
import os
import re
import sys
import pwd
myReg = re.compile(r'^\.')
myUID = os.getuid()
myArg = sys.argv[1]
print(os.getuid())
print(pwd.getpwuid(int(myUID)))
print(myArg)
def getsize(direct):
if os.path.isfile(direct) == True:
statinfo = os.stat(myArg)
print(str(statinfo.st_size))
else:
for i in os.listdir(direct):
try:
statinfo = os.stat(i)
if myReg.search(i):
continue
else:
print(i + ' Size: ' + str(statinfo.st_size))
except:
print('Exception occurred, can't read.')
continue
getsize(myArg)