解决:添加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)
答案 0 :(得分:0)
解决。添加os.chdir(myArg)可以解决问题。