我想測試一個簡單的代碼,它逐行讀取Pycharm文件。從pycharm中的sys.stdin文件讀取
for line in sys.stdin:
name, _ = line.strip().split("\t")
print name
我我想要的文件輸入在同一目錄:lib.txt
如何調試我在Pycharm代碼輸入文件?
我想測試一個簡單的代碼,它逐行讀取Pycharm文件。從pycharm中的sys.stdin文件讀取
for line in sys.stdin:
name, _ = line.strip().split("\t")
print name
我我想要的文件輸入在同一目錄:lib.txt
如何調試我在Pycharm代碼輸入文件?
您需要創建自定義運行配置,然後將您的文件作爲參數添加到「腳本參數」框中。請參閱Pycharm的online help以獲取分步指南。
但是,即使你這樣做(因爲你已經發現),你的問題將不起作用,因爲你沒有解析正確的命令行參數。
您需要改用argparse
:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("filename", help="The filename to be processed")
args = parser.parse_args()
if args.filename:
with open(filename) as f:
for line in f:
name, _ = line.strip().split('\t')
print(name)
您可以解決此問題,如果您使用的FileInput模塊,而不是試圖標準輸入直接讀取。
對於fileinput,如果腳本在參數中接收到文件名,它將按順序從參數中讀取。在你的情況下,更換上面的代碼:
import fileinput
for line in fileinput.input():
name, _ = line.strip().split("\t")
print name
有關的FileInput偉大的事情是,如果沒有提供參數,則默認爲標準輸入(或如果參數「 - 」提供)。
現在您可以創建一個運行配置並提供您想用作stdin的文件的文件名作爲腳本的唯一參數。
瞭解更多關於fileinput here
我一直試圖找到一種方法,使用閱讀文件作爲標準輸入PyCharm。然而,包括噴氣式大腦在內的大多數人都說沒有辦法也沒有支持,這是命令行的特性與PyCharm本身無關。 * https://intellij-support.jetbrains.com/hc/en-us/community/posts/206588305-How-to-redirect-standard-input-output-inside-PyCharm-
其實這個功能,閱讀文件作爲標準輸入,以某種方式必不可少的我,以減輕給輸入從解決hackerank或acmicpc一個規劃問題。
我找到了一個簡單的方法。我可以使用input()從文件中提供stdin!
import sys
sys.stdin = open('input.in', 'r')
sys.stdout = open('output.out', 'w')
print(input())
print(input())
input.in例如:
hello world
This is not the world ever I have known
output.out例如:
hello world
This is not the world ever I have known
爲了提高靈活性,您可以編寫Python腳本總是從標準輸入讀取,然後使用命令重定向從文件讀取:
$ python myscript.py < file.txt
但是,據我所知,你不能使用PyCharm的重定向,因爲運行配置不允許它。
或者,你可以接受文件名作爲命令行參數:
$ python myscript.py file.txt
有幾種方法來解決這個問題。我認爲對於這種情況是過分的。或者,你可以用sys.argv
直接訪問命令行參數:
import sys
filename = sys.argv[1]
with open(filename) as f:
for line in f:
name, _ = line.strip().split('\t')
print(name)
對於健壯的代碼,你可以檢查給出正確的參數個數。
當我運行我的代碼,我得到的輸出窗口: 在/ usr/bin中/ Python的/home/training/PycharmProjects/pp12/main.py purch.txt 但沒有任何反應(當我加載相同的代碼工作file with f1 = open('purch.txt') – thecheech
您需要閱讀[解析命令行參數](http://docs.python.org/2/library/optparse.html)。 –