我创建了一个python程序,请参见下文。它将文件移动到AWS S3。它正在期待输入。它可以很好地与pycharm一起使用,但是当我从命令提示符下调用python脚本时,它不会使用输入值。这是我的代码:
import os
import sys
import boto3
from botocore.client import Config
import configparser
import re
import os.path
## Initialize the Parameters
def initconfig(input):
config = configparser.ConfigParser()
config.read_file(open( 'CONFIG_AIRBILLING.conf'))
print('Code Name is :'+ input)
global REMOTE_DIR,ACCESS_KEY_ID,ACCESS_SECRET_KEY,BUCKET_NAME,TARGET_DIR,FILENAME,SRC_DIR,data,File
ACCESS_KEY_ID = config.get('ACCESS', 'ACCESS_KEY_ID')
print('ACCESS_ID_IS:'+ ACCESS_KEY_ID)
ACCESS_SECRET_KEY = config.get('ACCESS', 'ACCESS_SECRET_KEY')
BUCKET_NAME = config.get('ACCESS', 'BUCKET_NAME')
SRC_DIR = config.get(input, 'SRC_DIR')
FILENAME = config.get(input, 'FILENAME')
#LOC="C:\test\demo.txt"
TARGET_DIR = config.get(input, 'TARGET_DIR')
File='demo.txt'
#data = open(File, 'rb') ## This is the filename, need to change it
## This function will make sure file exist in Source directory
def readstatus():
try:
with open(File,'r') as f:
f.closed
result='True'
movefiles(result)
except (Exception,FileNotFoundError) as e:
print('***Error:File Not Found or Accessible***')
result='False*'
raise e
## This function will move the files to AWS S3 bucket
def movefiles(result):
if result=='True':
s3 = boto3.resource(
's3',
aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key=ACCESS_SECRET_KEY,
config=Config(signature_version='s3v4')
)
s3.Bucket(BUCKET_NAME).put_object(Key=TARGET_DIR + '/' + File, Body=File)
print('***File Moved***')
print("Done")
initconfig("ABC")
readstatus()
上面的代码在pycharm上运行良好,因为我可以更改initconfig函数值的值。但是,当我通过命令提示符运行此命令时,它不会接受我传递的参数值。这是我传递值的方式,请帮助我解决此问题。
python move_files_to_S3 "TEST"
答案 0 :(得分:2)
您要使用sys.argv
,这是一个包含通过命令行传递的所有参数的列表(但请注意,sys.argv[0]
是脚本本身的名称)。
您也最好检查一下__name__ == '__main__'
,以区分何时通过命令行从python解释器调用代码(如您文章末尾的示例)以及何时导入代码来自另一个模块:
if __name__ == '__main__':
initconfig(sys.argv[1])
readstatus()