python - 使用 argparse 在代码中的特定点使用函数?
问题描述
如果我尝试在终端中运行 argparse 命令,该函数将首先运行,然后是其余代码。但我想这样做,以便该函数将在代码的最后或代码中的特定点运行。我尝试将所有内容都变成函数,但这导致了其他问题。
filename = 'report_list.csv'
SPREADSHEET_ID = 'spreadsheet id here'
RANGE_NAME = "Baselines!A1:F200"
def Export_Data_To_Sheets():
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', scopes)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
response_date = service.spreadsheets().values().update(
spreadsheetId=SPREADSHEET_ID,
valueInputOption='RAW',
range=RANGE_NAME,
body=dict(
majorDimension='ROWS',
values=df.T.reset_index().T.values.tolist())
).execute()
print('Sheet successfully Updated')
global args
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--file', '-f', type=argparse.FileType('r'))
parser.add_argument('--name', '-n')
parser_sheets = parser.add_argument('--sheets', type=Export_Data_To_Sheets(),
action="store")
args = parser.parse_args()
global baseline_dict
if args.file is not None:
try:
baseline_dict = json.load(args.file)
args.file.close()
except:
print("JSON Baseline File {}: Unable to LOAD")
if args.name is not None:
with open(args.name) as f:
#print(json.load(f))
#baseline_dict = f
try:
baseline_dict = json.load(f)
except:
print("JSON Baseline File {}: Unable to LOAD")
results_dict = baseline_dict["results"]
#Turns the new dictionary into a dataframe
df = pd.DataFrame(results_dict)
#Establishes first column and then individually makes the other columns
df.columns = ['hashed_secret']
df['is_verified'] = ''
df['line_number'] = ''
df['type'] = ''
#Breaks up Dictionary to appropriate columns
df = df['hashed_secret'].apply(pd.Series)
#Drops extra rows with same secret
df.drop_duplicates(subset='hashed_secret', keep='first', inplace=True)
我还尝试将“if name == ' main ':”语句放在代码末尾。然后尝试将其余代码(如果 args.file 不是 None :) 放在函数之前。这将返回这个。我什至尝试将 args 设为全局变量。
Traceback (most recent call last):
File "./Json_DetectSecrets.py", line 22, in <module>
if args.file is not None:
NameError: name 'args' is not defined
解决方案
推荐阅读
- javascript - 限制文本输入中的字符数
- angular - 如何按角度值对字典进行排序
- go - 如何将 Sentry 与 go.uber.org/zap/zapcore 记录器一起使用
- python - 为什么在我的 Python 代码 Cows and Bulls 中出现“IndexError: list index out of range”?
- python - 用 pyaudio 播放的声音似乎正确但太短了
- php - 如何有条件地将同一网址上的其他网站发送给用户?
- boost - Boost.Python 构建为 bjam 带来了错误
- wordpress - 绝对外链bug,在url开头添加当前页面的url
- jquery - 基于滚动位置的增量 CSS 动画
- google-cloud-platform - 在 GKE 中保护服务