我对python很陌生,遇到了一个问题,我将从函数中返回一个整数。在函数中,我有一个包含['1586', '/home/username']
的列表。
我的问题是我无法找出一种方法来获取列表中第一个元素的字符串值并将其存储到整数变量中,然后可以从函数中返回该变量。我已经尝试了在网上找到的方法,当我只是将字符串变量转换为整数时,它似乎没有问题,但是,一旦在列表中进行尝试,它就无法正常工作。如果我对问题的解释或代码不足,请在评论中告诉我,我将尝试进行编辑。 谢谢!
import subprocess
import re
import pwd
def sizeofhome(int):
try:
for line in pwd.getpwall():
if int == line[2]:
path = line[5]
q = subprocess.check_output(["sudo", "du", "-sm", path]).decode()
q = re.split("\s", q)
number = q[0]
return(number)
except:
return None
答案 0 :(得分:0)
这应该对您有帮助!
import subprocess
import re
import pwd
def sizeofhome(int):
try:
for line in pwd.getpwall():
if int == line[2]:
path = line[5]
q = subprocess.check_output(["sudo", "du", "-sm", path]).decode()
q = re.split("\s", q)
number = int(q[0])
return(number)
except:
return None
答案 1 :(得分:0)
如[SO]: How to convert strings into integers in Python?所示,
[Python 3.Docs]: Built-in Functions - class int([x])用于将整数转换为字符串:
>>> int('1586') 1586
但是,通过命名函数参数 int ,您可以遮盖内置 int (如上),因此不再可能进行转换。
将参数重命名为其他参数(我建议 uid ,与 pwd 保持同步),问题应该解决了离开:
函数头:
def sizeofhome(uid):
功能主体:
if uid == line[2]:
作为一般建议,遇到此类错误时,请使用 print (在引发异常的行之前),并且不要忽略引发的异常。