如何使用不同的py文件运行需要参数的不同py文件夹



所以我从github(多线程Reddit Image Downloader v2.0(通过u/impshum((找到了一个脚本,该脚本使用给定的输入从Reddit.com上的subredit下载图像,这些输入是参数-s(subreddit(-I(图像数量(-o(顺序(。

class redditImageScraper:
def __init__(self, sub, limit, order):
config = configparser.ConfigParser()
config.read('conf.ini')
self.sub = sub
self.limit = limit
self.order = order
self.path = f'images/{self.sub}/'
self.reddit = praw.Reddit(client_id=config['REDDIT']['client_id'],
client_secret=config['REDDIT']['client_secret'],
user_agent='Multithreaded Reddit Image Downloader v2.0 (by u/impshum)')
def download(self, image):
r = requests.get(image['url'])
with open(image['fname'], 'wb') as f:
f.write(r.content)
def start(self):
images = []
try:
go = 0
if self.order == 'hot':
submissions = self.reddit.subreddit(self.sub).hot(limit=None)
elif self.order == 'top':
submissions = self.reddit.subreddit(self.sub).top(limit=None)
elif self.order == 'new':
submissions = self.reddit.subreddit(self.sub).new(limit=None)
for submission in submissions:
if not submission.stickied and submission.url.endswith(('jpg', 'jpeg', 'png')):
fname = self.path + re.search('(?s:.*)w/(.*)', submission.url).group(1)
if not os.path.isfile(fname):
images.append({'url': submission.url, 'fname': fname})
go += 1
if go >= self.limit:
break
if len(images):
if not os.path.exists(self.path):
os.makedirs(self.path)
with concurrent.futures.ThreadPoolExecutor() as ptolemy:
ptolemy.map(self.download, images)
except Exception as e:
print(e)
def main():
parser = argparse.ArgumentParser(description='Multithreaded Reddit Image Downloader v2.0 (by u/impshum)')
required_args = parser.add_argument_group('required arguments')
required_args.add_argument('-s', type=str, help="subreddit", required=True)
required_args.add_argument('-i', type=int, help="number of images", required=True)
required_args.add_argument('-o', type=str, help="order (new/top/hot)", required=True)
args = parser.parse_args()
scraper = redditImageScraper(args.s, args.i, args.o)
scraper.start()

if __name__ == '__main__':
main()

在我的第二个文件get_up.py中,我导入了run.py(上面代码的文件(,但无论我在这里做什么,它都会使用run.main((来告诉我它缺少的参数-s-I-o。有没有办法从get_up.py输入这些参数?

基本上,因为run.py解析器正在寻找命令行参数,所以在运行时可以将这些参数提供给get_up.py,例如:

$ python3 get_up.py -s (args goes here)

而不是:

$ python3 get_up.py

查看https://docs.python.org/3/library/argparse.html

最新更新