我想列印一個命令,直到它找到 main.py 檔案然后停止。
我嘗試了這段代碼,但根據邏輯,它會多次列印代碼,而不是逐行列印,直到我停在我找到 main.py 檔案的地方。
import subprocess
#store ls -l to variable
get_ls = subprocess.getoutput("ls -l")
#transfom output to string
ls = str(get_ls)
#search for main.py file in ls
for line in ls:
main_py = line.find('main.py')
print(ls)
#if find main.py print stop and exit
if main_py == 'main.py':
print('stop...')
exit()
輸出回圈這個:
-rw-r--r-- 1 runner runner 9009 Feb 19 19:00 poetry.lock
-rw-r--r-- 1 runner runner 354 Feb 19 19:00 pyproject.toml
-rw-r--r-- 1 runner runner 329 Feb 25 00:10 main.py
-rw-r--r-- 1 runner runner 383 Feb 14 17:57 replit.nix
-rw-r--r-- 1 runner runner 61 Feb 19 18:46 urls.tmp
drwxr-xr-x 1 runner runner 56 Oct 26 20:53 venv
我想要這個輸出:
-rw-r--r-- 1 runner runner 9009 Feb 19 19:00 poetry.lock
-rw-r--r-- 1 runner runner 354 Feb 19 19:00 pyproject.toml
-rw-r--r-- 1 runner runner 329 Feb 25 00:10 main.py
###### stops here #######
如何解決這個問題?
uj5u.com熱心網友回復:
這條線for line in ls沒有按照你的想法做。它不是逐行進行,而是ls逐個字符地進行。你想擁有的是for line in ls.splitlines(). main.py然后,您可以通過呼叫檢查是否在該行上"main.py" in line
import subprocess
#store ls -l to variable
get_ls = subprocess.getoutput("ls -l")
#transfom output to string
ls = str(get_ls)
#search for main.py file in ls
for line in ls.splitlines():
print(line)
#if find main.py print stop and exit
if "main.py" in line:
print('stop...')
exit()
我認為這應該是您想要的更多。
您還列印ls了每個回圈,您需要將其更改為僅列印當前行
uj5u.com熱心網友回復:
在我看來,如果你只想實作結果而不介意改變你的邏輯,這是最優雅的,也是最“pythonic”的。我喜歡 os.walk() 方法的簡單性:
import os
for root, dirs, files in os.walk("."):
for filename in files:
print(filename)
if filename == "main.py":
print("stop")
break
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/432398.html
上一篇:強制make使用python2?
