2016-01-26 2 views
0

Решено: добавление 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) 

ответ

0

Решено. Добавление решения os.chdir (myArg) помогло решить проблему.

Смежные вопросы