0

我在终端上运行一个 Python3 脚本,在我的终端上它写出很多print()我添加的语句,以及我正在使用的库的输出。

我希望将输出保存在文件中,所以我像这样运行脚本。

python3 myscript.py > logfile.txt

print()在 Python 中的所有内容现在都按我的意愿进入文件,而不是打印到我的终端。

但是,在这个脚本中,我还使用ftputil库来下载文件,并且 ftputil 的一些输出仍然显示在我运行脚本的终端上。所以现在我的程序的输出被分成两部分,这使得它不太有用。

download-ftp.py:160: DeprecationWarning: `use_list_a_option` will default to `False` in ftputil 4.x.x with ftputil.FTPHost(ftp_addr, ftp_user, ftp_pw) as ftp_host:

需要什么才能使 ftputil 的输出也进入我想要的文件?

4

1 回答 1

1

没错,这个弃用警告来自 ftputil。

ftputil 使用 Pythonwarnings模块来显示此警告。该warnings模块不仅输出警告(默认为 stderr),还提供控制实际显示哪些警告的方法(请参阅警告过滤器临时抑制警告)。

您可以使用抑制 ftputil 警告

import warnings

import ftputil


with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=DeprecationWarning)
    ftp_host = ftputil.FTPHost(host, user, password)
...

如果您真的希望日志文件中出现弃用警告,您可以使用其他人在评论中建议的方法。这是一个例子:

import sys

import ftputil           


old_stderr = sys.stderr
sys.stderr = sys.stdout
try:
    ftp_host = ftputil.FTPHost(host, user, password)
finally:
    sys.stderr = old_stderr
于 2019-08-22T20:38:04.990 回答