Have Python Script Locate Files in Seperate Directories
我对Python编程非常陌生,我编写了一个脚本,通过sftp自动将文件上传到远程机器上。剧本的效果很好,但有一个问题我似乎想不出来。如果我在我要上传的文件所在的目录中,一切都会好起来。但是,当我键入不在该目录中的文件名时,它不喜欢这样。每次浏览不同的文件夹都很麻烦。我知道我可以把文件合并到一个文件夹中…但我很想尝试将其自动化。
这就是我写的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #! /usr/bin/python2 # includes import thirdpartylib import sys if len(sys.argv) != 6: print"Usage: %s file url port username password" % sys.argv[0] exit(0) file = sys.argv[1] host = sys.argv[2] port = int(sys.argv[3]) username = sys.argv[4] password = sys.argv[5] filelocation ="Downloads/%s" % file transport = thirdpartylib.Transport((host, port)) transport.connect(username=username, password=password) sftp = thirdpartylib.SFTPClient.from_transport(transport) sftp.put(file, filelocation) sftp.close() transport.close() |
我认为您希望将
首先,如果要对文件路径进行任何操作,建议您使用一些内置功能来构造它们,以确保具有适当的文件分隔符等。
也就是说,我建议让用户在文件路径中作为绝对路径(在这种情况下,它可以位于计算机上的任何位置)或相对路径(在这种情况下,它是相对于当前目录的)。我不会将
所以,归根结底,将
1 2 3 4 5 | filelocation = sys.argv[1] # You can even do some validation if you want is not os.path.isfile(filelocation): print"File '%s' does not exist!" % filelocation |
如果您真的希望
1 2 | if not os.path.isabs(filelocation): filelocation = os.path.join('Downloads', filelocation) |
号
然后用户可以通过两种方式调用脚本:
1 2 3 4 5 | # Loads file in /absolute/path/to/file ./script.py /absolute/path/to/file ... # Loads filename.txt from Downloads/filename.txt ./script.py filename.txt ... |
另外,看起来您的