Python 虽然我想将输出重定向到文件,但 ftputil 正在输出到终端
Python ftputil outputting to terminal although I want to redirect output to a file
我在终端上 运行ning 一个 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 的输出也进入我想要的文件?
你是对的,这个弃用警告来自 ftputil。
ftputil 使用 Python warnings
module to show this warning. The warnings
module not only outputs warnings (by default to stderr), but also offers ways to control which warnings are actually shown (see The Warnings Filter and Temporarily Suppressing Warnings).
您可以使用
抑制 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
我在终端上 运行ning 一个 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 的输出也进入我想要的文件?
你是对的,这个弃用警告来自 ftputil。
ftputil 使用 Python warnings
module to show this warning. The warnings
module not only outputs warnings (by default to stderr), but also offers ways to control which warnings are actually shown (see The Warnings Filter and Temporarily Suppressing Warnings).
您可以使用
抑制 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