我有一个通过.bat(批处理)文件调用的python脚本。为了让Python脚本工作,我在.bat文件中传递了硬编码参数。但是我需要动态地传递参数,因为每次参数的值(名称)都不同
python脚本的逻辑与我的问题无关,因为它工作正常。这里的问题是如何在.bat文件中动态传递这样的参数,以便在相同的.bat文件python脚本中指定的参数将被删除,但动态传递的参数除外
sys.argv[1]和sys.argv[1]是python文件中的参数(请参见下面的代码),它们是硬编码的,并在.bat文件中传递。但是我需要动态地传递参数(因为名称不同)
这是一个.bat文件,由于参数是硬编码的,因此可以正常工作
python "E:\Export\Test.py" "E:\Config\Test_Upload_10-15-2020.csv" "./Test_Upload_10-15-2020.csv" "E:\BulkInsert_DataAcquisition\SAM\Log"
参数是完全限定的文件路径和文件名。 “E:\Export\Test\u Upload\u 10-15-2020.csv”是sys.argv[1] “Test_Upload_10-15-2020.csv”是sys.argv[2]
因此,我需要将其自动化,以允许处理以“Test\u Upload\u”开头的每个csv文件
我试图用.bat中的“”符号替换日期戳(参见下面的代码) python“E:\Export\TEST.py”E:\Config\TEST\u Upload\ueem>.csv./TEST\u Upload\u*.csv“E:\logFolderPath”
但是我在执行这个.bat文件时出错了
出现错误:[Error 123]文件名、目录名或卷标语法不正确:“E:\Export\Test\u Upload\u*.csv”
但它的确切文件名为“Test_10-15-2020.csv”
只要我在参数中传递准确的CVC名称,下面的Python脚本就可以正常工作
import pysftp
import sys
import datetime
if __name__ == "__main__":
localFilePath = sys.argv[1] #"\\MyDBServer\E:\Config\Test_Upload_%.csv" % name
remoteFilePath = sys.argv[2] #"./Test_Upload_%.csv" % name.csv"
logFolderPath = sys.argv[3] #"E:\logFolderPath"
myHostname = "SFTP.MyWebSite.com"
myUsername = "MyLogin"
myPassword = "MyPassword"
try:
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword) as sftp:
print ("Connection succesfully stablished ... ")
sftp.put(localFilePath, remoteFilePath)
except Exception as e:
logfile = open(logFolderPath+"\Error_"+datetime.datetime.now().strftime("%Y%m%d_%H%M%S")+".log", "w")
logfile.write("Error occured: "+ str(e))
print(str(e))
logfile.close
sys.exit(1)
您可以搜索
"E:\Export\Test_*.csv"
并获取最新或最旧的文件或
相关问题 更多 >
编程相关推荐