4

当我调试 c 代码时,我总是使用 'gdb a.out < test' 来重定向标准输入流。但是当涉及到 时pdb,我发现它不起作用。在 pdb 帮助文档中搜索后,我仍然找不到与此问题相关的内容。

编辑:我发布我的代码。您能帮我将其更改为以最少的修改从文件中读取吗?谢谢。

cnt = int(raw_input())
paths = []
for cs in range(cnt):
    action, path = map(None, (raw_input() + " dumb").split(" ", 1))
    if (action == "pwd"):
        print "/",
        for p in paths:
            print p + "/",
        print
    else:
        strs = path.split("/")
        for i in range(len(strs)):
            p = strs[i]
            if (p == ""): 
                continue
            if (p == ".."):
                paths.pop()
            else:
                paths.append(p)
4

3 回答 3

1

更改您的程序以从命令行指定的文件中读取测试数据。

于 2012-06-19T11:54:29.023 回答
1

好的。我找到了解决方案。file所以我只需要注释和取消注释最初切换方式stdin来自的这两行。

import pdb
import sys

file = sys.stdin
#file = open('test', "r")

cnt = int(file.readline())
paths = []
for cs in range(cnt):
    inputs = file.readline().split()
    action  = inputs[0]
    if (action == "pwd"):
        sb = "/"
        for p in paths:
            sb = sb + p + "/"
        print sb
    else:
        path = inputs[1]
        strs = path.split("/")
        for i in range(len(strs)):
            p = strs[i]
            if (p == ""): 
                continue
            if (i == 1 and strs[0] == ""):
                paths = []
                paths.append(p)
                continue
            if (p == ".."):
                paths.pop()
            else:
                paths.append(p)
于 2012-06-20T08:28:28.393 回答
1

作为一个丑陋的临时黑客,您可以重新定义raw_input()(Python 2) 或input()(Python 3) 以从这样的文件中读取(对于 Python 2 替换inputraw_input

def input(f=open("test")): return f.readline().rstrip()

# `input()` now reads from "test" file instead of STDIN!
... = input()
于 2014-12-15T21:10:59.970 回答