Python paramiko chdir не работает.getcwd () возвращает None - PullRequest
0 голосов
/ 05 июня 2018

Я использую paramiko для подключения к своему FTP следующим образом:

transport = paramiko.Transport((host, port))

transport.connect(
                  username=user,
                  password=pwd,
                  )

client = paramiko.SFTPClient.from_transport(transport)
client.chdir("/foo/bar/")

, и я получаю эту ошибку:

FileNotFoundError: [Errno 2] No such file

И использование getcwd возвращает None.Я знаю, что dir существует, потому что, если я сделаю client.listdir(), он на самом деле возвращает список файлов, которые я хочу загрузить.Это ошибка?Я что-то упустил?

Итак, вот полная информация:

paramiko.util.log_to_file(cwd/"paramiko.log")

transport = paramiko.Transport((host, port))
transport.connect(
                 username=user,
                 password=pwd,
                 )

client = paramiko.SFTPClient.from_transport(transport)
print(client.listdir())

возвращает список файлов:

['Dax30_Call 2020-06 (Jun 2020).csv','Dax30_Put 2018-06 (Jun 2018).csv','EuroStoxx50_Call 2018-11 (Nov 2018).csv','EuroStoxx50_Put 2022-12 (Dec 2022).csv','EuroStoxx50_Call 2019-06 (Jun 2019).csv','EuroStoxx50_Call 2020-06 (Jun 2020).csv','EuroStoxx50_Call 2022-12 (Dec 2022).csv']

Я знаю, что каталог существует, потому что FTPмой, и я могу просматривать его при подключении к нему через терминал.Файлы находятся в каталоге / foo / bar.

print(client.listdir("/foo/bar"))

или

print(client.chdir("/foo/bar"))

возвращает (независимо от порядка)

Traceback (most recent call last):
  File "/media/Data/Dev/OptionChain/download_data.py", line 91, in <module>
print(client.listdir("/foo/bar"))
  File "/usr/local/lib/python3.6/site-packages/paramiko/sftp_client.py", line 186, in listdir
return [f.filename for f in self.listdir_attr(path)]
  File "/usr/local/lib/python3.6/site-packages/paramiko/sftp_client.py", line 207, in listdir_attr
t, msg = self._request(CMD_OPENDIR, path)
  File "/usr/local/lib/python3.6/site-packages/paramiko/sftp_client.py", line 780, in _request
return self._read_response(num)
  File "/usr/local/lib/python3.6/site-packages/paramiko/sftp_client.py", line 832, in _read_response
self._convert_status(msg)
  File "/usr/local/lib/python3.6/site-packages/paramiko/sftp_client.py", line 861, in _convert_status
raise IOError(errno.ENOENT, text)
FileNotFoundError: [Errno 2] No such file

Я не вижу ничего интересногов лог-файл paramiko

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я предполагаю, что это что-то связанное с правами пользователя sftp

$ ssh user1@xx.xx.xx.xxx -p22
$ cd /foo/bar
$ ls 
'Dax30_Call 2018-06 (Jun 2018).csv','Dax30_Put 2019-03 (Mar 2019).csv'

$ realpath 'Dax30_Call 2018-06 (Jun 2018).csv'
'/foo/bar/Dax30_Call 2018-06 (Jun 2018).csv'

$ sftp -v -P 22 user2@xx.xx.xx.xxx
sftp> pwd
Remote working directory: /bar

Я пойду с этим сейчас!Спасибо

0 голосов
/ 06 июня 2018

Вы перечислите свою корневую папку, а папка foo отсутствует.

Поэтому мы не видим причин, по которым изменение папки на /foo/bar должно работать.

Тот факт, что вы можетесм. папку, когда вы "просматриваете ее при подключении к ней через терминал" здесь не имеет значения.Терминальная оболочка доступа и FTP - это два разных интерфейса, которые не должны возвращать одинаковые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...