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

Ok。解決策を見つけました。fileしたがって、方法を切り替える最初の2行をコメントしてコメントを外す必要があり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

コマンド ラインで指定されたファイルからテスト データを読み取るようにプログラムを変更します。

于 2012-06-19T11:54:29.023 に答える
1

醜い一時的なハックとして、raw_input()(Python 2) またはinput()(Python 3) を再定義して、このようなファイルから読み取ることができます (Python 2 の場合は に置き換えinputますraw_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 に答える