1118 Похоже, что все вышеперечисленные ответы решают проблему. Еще один момент: вместо pd.set_option('option_name')
, вы можете использовать (автозаполнение)
pd.options.display.width = None
См. Pandas doc: Опции и настройки:
Опции имеют полное «пунктирное» имя без учета регистра (например,
display.max_rows
). Вы можете получить / установить параметры напрямую как атрибуты атрибута верхнего уровняoptions
:In [1]: import pandas as pd In [2]: pd.options.display.max_rows Out[2]: 15 In [3]: pd.options.display.max_rows = 999 In [4]: pd.options.display.max_rows Out[4]: 999
[...]
для параметров max_...
:
max_rows
иmax_columns
используются в__repr__()
методах, чтобы решить, использовать лиto_string()
илиinfo()
для визуализации объекта в строку. В случае, если python / IPython работает в терминале, это может быть установлено в 0, и pandas будет правильно автоматически определять ширину терминала и переключаться на меньший формат в случае, если все столбцы не поместятся вертикально. Записная книжка IPython, IPython qtconsole или IDLE не работают в терминале, и, следовательно, невозможно выполнить правильное автоопределение. ЗначениеNone
’означает неограниченное. [выделено не оригинально]
для параметра width
:
Ширина дисплея в символах. В случае, если python / IPython работает в терминале, это может быть установлено на
None
, и pandas будет правильно автоматически определять ширину. Обратите внимание, что записная книжка IPython, IPython qtconsole или IDLE не работают в терминале и, следовательно, невозможно правильно определить ширину.
def is_file(filename):
current = ftp.pwd()
try:
ftp.cwd(filename)
except:
ftp.cwd(current)
return True
ftp.cwd(current)
return False
Вот еще одно решение. На полпути к написанию я понял, что это проблема. Если у вас нет разрешения на изменение папки, вместо этого она будет прочитана как файл. Он будет работать, если у вас есть доступ к любой папке.
Я все еще разместил его, потому что, возможно, он даст некоторые идеи.
FTP.dir
возвращает список каталогов, который вы можете проанализировать с помощью функции обратного вызова, чтобы узнать, является ли это каталогом. Например, вот так:
def parse(line):
if line[0] == 'd':
print(line.rpartition(' ')[2]) # gives you the name of a directory
ftp.dir(parse)
def is_file(filename):
return ftp.size(filename) is not None
This works because ftp.size returns None if it is a directory.
FTP является довольно простым протоколом, и нет встроенного запроса протокола, позволяющего получить тип (файл, dir) каждого узла, так что эвристический, как тот, что вы нашли, является единственным решением.
Если получение размера каждого узла не работает, возможно, следует рассмотреть возможность вызова FTP.nlst()
для каждого из этих узлов: ошибки будут не dir, а файлы.