使用os.stat-Python时出错

使用os.stat-Python时出错,python,Python,已解决:添加os.chdir(myArg)解决了该问题。 尝试在除我的主目录或我拥有的文件/direcs以外的任何对象上运行以下代码时,我遇到了一个错误 FileNotFoundError:[Errno 2]没有这样的文件或目录: 我在root中创建了一个文件,并将该文件的所有权更改为pi:pi(运行脚本的用户)。如果我直接指定该文件,它会工作,但是如果我在“/”上运行脚本,它将不会读取该文件或任何其他文件/direc。我还创建了一个目录/tempdir\u delete/,并将所有权更改为pi

已解决:添加os.chdir(myArg)解决了该问题。

尝试在除我的主目录或我拥有的文件/direcs以外的任何对象上运行以下代码时,我遇到了一个错误

FileNotFoundError:[Errno 2]没有这样的文件或目录:

我在root中创建了一个文件,并将该文件的所有权更改为pi:pi(运行脚本的用户)。如果我直接指定该文件,它会工作,但是如果我在“/”上运行脚本,它将不会读取该文件或任何其他文件/direc。我还创建了一个目录/tempdir\u delete/,并将所有权更改为pi:pi。。如果我专门在“/tempdir_delete/*”上运行脚本,它会工作,但如果我不使用*则会失败

为什么除了我明确指定并拥有的/home/pi/或文件之外,其他所有文件都会失败?它以用户pi的身份运行stat,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)

解决了。添加一个os.chdir(myArg)解决了这个问题