如何提示用户在 python 中输入远程服务器的路径?
How to prompt user to enter path to a remote server in python?
用例:某个文件位于远程服务器上。我不想在我的程序中硬编码该文件的路径,而是希望程序提示我指定远程服务器上该目录的路径。这将有助于程序的可移植性。我可以在 pyCharm 4.5 专业版中连接到远程服务器。使用 SFTP 连接到 pyCharm 中的远程服务器。至少目前,密码或密钥文件不是需要关注的问题。
问题:raw_input() 函数适用于本地解释器。但是我用什么方法来提示用户输入位于远程服务器上的文件的目录路径呢?
现在我正在硬编码程序中的文件路径,例如
input_file="/home/ashish/PyCharm_proj/raw_data/all_user_and_tweets_only_raw.csv"
我还尝试了以下代码,但在远程服务器上执行时当然不起作用
import os,sys
user_input = raw_input("Enter the path of your file (use \: ")
assert os.path.exists(user_input), "I did not find the file at, "+str(user_input)
input_file = open(user_input,'r+')
print("Hooray we found your file!")
类似的问题是 1,2,3,4,但我找不到任何满足我的用例的相关问题。有什么建议可以解决这个问题吗?
要验证远程文件是否存在 host/server,您需要一种连接到该主机的方法。根据您的情况,有很多不同的方法。
- 根据您上面的描述,您似乎可以通过 ssh 访问
远程系统?在这种情况下 Paramiko 可用于通过 ssh 连接
并执行远程命令
- 如果远程主机文件通过 HTTP 发布在网站上,您可以
通过 URL 验证它,但要注意这可能无法反映远程主机
完整路径,因为它取决于 HTTP 根目录。
所以这真的取决于你的情况。
如果使用 paramiko,最简单的方法之一是使用 SFTP class。像这样:
ssh_client = paramiko.SSHClient()
ssh_client.connect(host, port, user, password)
sftp = ssh_client.open_sftp()
file_stat = sftp.stat(path) # can use stat
try:
sftp_obj1 = sftp.file(path) # or use file
sftp_obj2 = sftp.open(path) # or use open
except:
print "Error! File not found!"
所以,一开始问题有点不清楚。 OP 最终正在寻找一种方法来向他的脚本提供有关远程服务器上文件位置(已知)的输入。
OP 已尝试 raw_input
但遇到了未指明的错误。
评论中的进一步讨论表明原始方法对于此用例是正确的。错误出现在不相关的代码部分,其中 OP 对输入字符串和文件对象使用相同的标识符,导致尝试 open
文件对象。
用例:某个文件位于远程服务器上。我不想在我的程序中硬编码该文件的路径,而是希望程序提示我指定远程服务器上该目录的路径。这将有助于程序的可移植性。我可以在 pyCharm 4.5 专业版中连接到远程服务器。使用 SFTP 连接到 pyCharm 中的远程服务器。至少目前,密码或密钥文件不是需要关注的问题。
问题:raw_input() 函数适用于本地解释器。但是我用什么方法来提示用户输入位于远程服务器上的文件的目录路径呢?
现在我正在硬编码程序中的文件路径,例如
input_file="/home/ashish/PyCharm_proj/raw_data/all_user_and_tweets_only_raw.csv"
我还尝试了以下代码,但在远程服务器上执行时当然不起作用
import os,sys
user_input = raw_input("Enter the path of your file (use \: ")
assert os.path.exists(user_input), "I did not find the file at, "+str(user_input)
input_file = open(user_input,'r+')
print("Hooray we found your file!")
类似的问题是 1,2,3,4,但我找不到任何满足我的用例的相关问题。有什么建议可以解决这个问题吗?
要验证远程文件是否存在 host/server,您需要一种连接到该主机的方法。根据您的情况,有很多不同的方法。
- 根据您上面的描述,您似乎可以通过 ssh 访问 远程系统?在这种情况下 Paramiko 可用于通过 ssh 连接 并执行远程命令
- 如果远程主机文件通过 HTTP 发布在网站上,您可以 通过 URL 验证它,但要注意这可能无法反映远程主机 完整路径,因为它取决于 HTTP 根目录。
所以这真的取决于你的情况。
如果使用 paramiko,最简单的方法之一是使用 SFTP class。像这样:
ssh_client = paramiko.SSHClient()
ssh_client.connect(host, port, user, password)
sftp = ssh_client.open_sftp()
file_stat = sftp.stat(path) # can use stat
try:
sftp_obj1 = sftp.file(path) # or use file
sftp_obj2 = sftp.open(path) # or use open
except:
print "Error! File not found!"
所以,一开始问题有点不清楚。 OP 最终正在寻找一种方法来向他的脚本提供有关远程服务器上文件位置(已知)的输入。
OP 已尝试 raw_input
但遇到了未指明的错误。
评论中的进一步讨论表明原始方法对于此用例是正确的。错误出现在不相关的代码部分,其中 OP 对输入字符串和文件对象使用相同的标识符,导致尝试 open
文件对象。