使用参数的Python参数

使用参数的Python参数,python,python-3.x,Python,Python 3.x,因此,我试图编写一个Python代码,允许我列出给定文件夹中的所有文件以及大小和创建日期。我把这部分记下来了。然后我尝试输入一个参数,这样它只显示大于1000的结果。这是我到目前为止所拥有的。我得到索引器:列表索引超出范围 编辑代码: import os, sys from datetime import datetime created = os.stat('.').st_ctime path = sys.argv[1] dirs = os.listdir(path) for fil

因此,我试图编写一个Python代码,允许我列出给定文件夹中的所有文件以及大小和创建日期。我把这部分记下来了。然后我尝试输入一个参数,这样它只显示大于1000的结果。这是我到目前为止所拥有的。我得到索引器:列表索引超出范围

编辑代码:

import os, sys

from datetime import datetime

created = os.stat('.').st_ctime

path = sys.argv[1]

dirs = os.listdir(path)

for file in dirs:

if os.stat(file).st_size == int(sys.argv[2]):
    print(file, os.stat(file).st_size, datetime.fromtimestampcreated)

如果这是您的命令行
myfilename.py D:\specifiedfolder 1000
,则脚本参数为:

sys.argv[1]  # "D:\SpecificedFolder"
sys.argv[2]  # "1000"
sys.argv[3]
->
索引器
没有剩余参数

现在,另一个评论。从命令行传递
(似乎是有意的)并不是一个简单的接口,因为它对shell(重定向)有自己的意义,需要转义

以及在处理命令行参数时。乍一看可能有点复杂/过分,但它确实提供了许多舒适的功能,而且通常是正确的选择


更新:以反映评论

由于代码和传递的参数相同,因此需要删除以下行:

if sys.argv[2] == '>':

可以在步骤(左)中移动以下块。并将
sys.argv[3]
引用更改为
sys.argv[2]
。当它运行时,您可能会注意到您正在寻找大小相等(
==
),而不是(等于或)大于

您是否真的传递了任何命令行参数?我将在命令提示符下键入myfilename.py D:\specifiedfolder 1000,希望获得超过1000的所有文件,但它只是列出folder中的所有文件。您应该继续,将这些信息添加到您的问题中,而不是添加到注释中。我是否可以删除arg3.我在编码和学习方面都是超级高手。对不起,我知道这件事对大多数人来说都很简单,不需要道歉。当学习和编码很有趣时,这是很好的。我已经更新了答案。有了这些,你应该有一些可以运行的东西。现在这可能是一个更大的问题,但是真正提到的argparse确实让很多事情变得简单,包括生成用法消息、默认值、重复参数、输入验证等等。非常感谢您为我澄清这一点。是否有一种方法可以代替查找特定大小查找大于特定大小的所有大小(例如使用-gt而不是>来减少运行代码时出现的问题)?我已经更新了主要部分中的代码,以反映这些更改,可能会使脚本采用
script.py dir/-gt 1000
之类的参数。然后您可以返回到当前的if子句。。。并且必须在命令行上提供所有三个参数。一旦开始添加可选参数并处理可能的组合,这就是您将遇到的问题之一。它很快就会变得笨重。