【发布时间】:2015-10-11 22:44:35
【问题描述】:
我试图在另一个 Python 脚本中执行操作后访问函数中包含的变量,但我不想运行函数的操作,我只需要访问返回的值变量gh 和user。
我尝试了不同的方法来做到这一点,例如在主脚本中将变量的初始值设置为 None,但我遇到的问题是当我将 script1 导入到 script2 时,它会通过脚本运行并再次将有问题的变量重置为无。此外,我尝试将它们包装在一个没有运气的类中。
另外,我尝试使用 if __name__ = '__main__': 运行函数,但我似乎无法弄清楚如何将函数中的值放入 script2 以用作全局变量。
我在这里看到了一些可能有效的答案,例如将函数的值返回给另一个函数以供使用??,但我无法完全确定语法,因为函数似乎不包含变量。
如果我问错了这个问题,请让我知道如何改进它,因为我正在尝试提出“好”的问题,以免我被禁止。我还在学习,我确实在这里提出了很多问题,但我从中学到了很多。
script1.py:
#! /usr/bin/python
import github3
from github3 import login, GitHub, authorize
from getpass import getuser, getpass
import requests
import configparser
def getCreds():
try:
user = input('GitHub username: ')
except KeyboardInterrupt:
user = getuser()
password = getpass('GitHub token for {0}: '.format(user))
gh = login(user, password)
if __name__ == '__main__':
getCreds()
exec(open("next_file.py").read())
script2.py
import os
import github3
from github3 import login, GitHub, authorize
from getpass import getuser, getpass
import requests
import csv
import configparser
import sys
import script1
import codecs
gh = script1.gh
user = script1.user
def one_commit_one_file_change_pr():
#open csv file and create header rows
with open('c:\\commit_filechange.csv', 'w+') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(['Login', 'Title', 'Commits', 'Changed Files','Deletions', 'Additions'])
for pr in result:
data = pr.as_dict()
changes = (gh.repository(user, repo).pull_request(data['number'])).as_dict()
if changes['commits'] == 1 and changes['changed_files'] == 1:
#keep print to console statement for testing purposes
#print changes['user']['login']
with open('c:\\commit_filechange.csv', 'a+') as f:
csv_writer = csv.writer(f)
csv_writer.writerow([changes['user']['login'], changes['title'], changes['commits'], changes['changed_files']])
one_commit_one_file_change_pr()
【问题讨论】:
标签: python python-3.x