gpt4 book ai didi

Python 代码中的 Ubuntu : How to use PDB when you have sys. 标准输入中的 Python 调试器?

转载 作者:行者123 更新时间:2023-12-04 18:39:03 29 4
gpt4 key购买 nike

我有以下计算单词的 Python 程序,我将此文件命名为“map.py”:

#!/usr/bin/env python 

# import sys because we need to read and write data to STDIN and STDOUT
import sys

# reading entire line from STDIN (standard input)
for line in sys.stdin:
# to remove leading and trailing whitespace
line = line.strip()
# split the line into words
words = line.split()

# we are looping over the words array and printing the word
# with the count of 1 to the STDOUT
for word in words:
# write the results to STDOUT (standard output);
# what we output here will be the input for the
# Reduce step, i.e. the input for reducer.py
print ('%s\t%s' % (word, 1))

我有一个名为“input_File”的输入文件:
Hello I am GeeksforGeeks Hello I am an Intern
geeks for geeks is the best online coding platform
welcom to geeks for geeks hadoop streaming tutorial
两个文件“map.py”和“input_File”放在同一个目录下。
(顺便说一下,我用的操作系统是Ubuntu 20.04.2 LTS,我用的是Python3)
因此,为了运行 Python 程序,我在上面有两个文件的目录中打开终端并键入:
cat input_File | python3 map.py
python程序“map.py”运行良好
但现在我想将 Python 调试器 (pdb) 用于“map.py”Python 程序。
所以我插入了 行导入pdb; pdb.set_trace() 在“map.py”Python 程序中,如下所示:
#!/usr/bin/env python 

# import sys because we need to read and write data to STDIN and STDOUT
import sys

import pdb; pdb.set_trace()

# reading entire line from STDIN (standard input)
for line in sys.stdin:
# to remove leading and trailing whitespace
line = line.strip()
# split the line into words
words = line.split()

# we are looping over the words array and printing the word
# with the count of 1 to the STDOUT
for word in words:
# write the results to STDOUT (standard output);
# what we output here will be the input for the
# Reduce step, i.e. the input for reducer.py
print ('%s\t%s' % (word, 1))
我再次运行python程序(我想使用pdb来调试这个python程序):
cat input_File | python3 map.py
但这是我的终端中出现的内容:
> /home/.../.../map.py(8)<module>()
-> for line in sys.stdin:
(Pdb) *** SyntaxError: invalid syntax
(Pdb) *** SyntaxError: invalid syntax
(Pdb) *** SyntaxError: invalid syntax
(Pdb)
Traceback (most recent call last):
File "map.py", line 8, in <module>
for line in sys.stdin:
File "map.py", line 8, in <module>
for line in sys.stdin:
File "/usr/lib/python3.8/bdb.py", line 88, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python3.8/bdb.py", line 113, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
请帮忙,使用标准输入 sys.stdin 时如何运行 Python 调试器?
我的意思是在我的情况下, 如何使用 pdb 调试上面的 Python 程序“map.py”?请帮忙

最佳答案

如果您的标准输入不可用,您可能想尝试 wdb .

wdb is a full featured web debugger based on a client-server architecture.


要使用它:
  • 安装:pip install wdb wdb.server
  • 在另一个终端中,启动服务器:wdb.server.py &
  • 在您的代码中,而不是 pdb , 使用 wdb :

  •     import wdb
    wdb.set_trace()
    这是从其主页截取的显示正在运行的 wdb 的屏幕截图。
    wdb screenshot
    我过去曾在标准输入不可用的守护进程中使用 wdb。

    关于Python 代码中的 Ubuntu : How to use PDB when you have sys. 标准输入中的 Python 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66449856/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com