使用os.stat时出错 - Python

时间:2016-01-26 05:30:16

标签: python

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

尝试在我的主目录或我拥有的files / direcs之外的任何其他代码上运行以下代码时出错。

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

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

除了我明确指定和拥有的/ home / pi /或文件外,为什么它会失败?它以用户pi的形式运行stat,由sudo授予执行stat的权限。另外,为什么我必须明确指定我拥有的文件?它不应该在root中看到该文件并且因为我拥有它而工作吗?

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)

1 个答案:

答案 0 :(得分:0)

解决。添加os.chdir(myArg)可以解决问题。