pythonshell變數
A. 請問各位,在shell中賦值了一個變數,能用python讀取他嗎,用什麼命令呢
import subprocess
a = subprocess.Popen("echo $PATH", stdout=subprocess.PIPE, shell=True)
b, err = a.communicate()
print b
B. python shell 中怎麼實現清屏
Python Shell有兩種方式,分別為「Windows命令行窗口」和「IDLE」
「命令行窗口」下可以通過如下兩種方法:
1. import subprocess
subprocess.call("clear") # linux/mac
subprocess.call("cls", shell=True) # windows
執行完次命令後,窗口頂部第一行會出現一個0,接下來才會是輸入提示符「>>>」
消除這個0的方法是在此命令前添加一個變數,例如 i=subprocess.call("cls", shell=True)
2. import os
os.system("cls") # windows
os.system("clear") # linux
執行完次命令後,窗口頂部第一行也會出現一個0,接下來才會是輸入提示符「>>>」
消除這個0的方法同方法1
「IDLE」下以上兩種方式都不起作用,可以通過建立如下函數實現:
1、偽清屏
def cls():
print "
"*80 #Shell 3.0+ 改為 print(('
'*80))
此函數將命令行往下移動80行,數字80可以自己任意設定
這是偽清屏,只是輸入滿屏的空格而已
2、插件法
首先下載clearwindow.py,將這個文件放在Python XLibidlelib目錄下(X為python版本),然後在這個目錄下找到config-extensions.def這個文件(idle擴展的配置文件),以記事本的方式打開它(為防止出錯,可以在打開它之前先一個備份)。打開config-extensions.def 後在句末加上這樣幾句:
[ClearWindow]
enable=1
enable_editor=0
enable_shell=1
[ClearWindow_cfgBindings]
clear-window=<Control-Key-l>
然後保存退出即可。
打開python的idle,看看options是不是多了一個選項clear shell window ctrl+L
如果是這樣的話,那就證明安裝成功了,以後要清屏直接ctrl+L就可以了
附clearwindow.py代碼:
classClearWindow:
menudefs=[
('options',[None,
('ClearShellWindow','<<clear-window>>'),
]),]
def__init__(self,editwin):
self.editwin=editwin
self.text=self.editwin.text
self.text.bind("<<clear-window>>",self.clear_window2)
self.text.bind("<<undo>>",self.undo_event)#add="+"doesn'twork
defundo_event(self,event):
text=self.text
text.mark_set("iomark2","iomark")
text.mark_set("insert2","insert")
self.editwin.undo.undo_event(event)
#fixiomarkandinsert
text.mark_set("iomark","iomark2")
text.mark_set("insert","insert2")
text.mark_unset("iomark2")
text.mark_unset("insert2")
defclear_window2(self,event):#Alternativemethod
#
text=self.text
text.undo_block_start()
text.mark_set("iomark2","iomark")
text.mark_set("iomark",1.0)
text.delete(1.0,"iomark2linestart")
text.mark_set("iomark","iomark2")
text.mark_unset("iomark2")
text.undo_block_stop()
ifself.text.compare('insert','<','iomark'):
self.text.mark_set('insert','end-1c')
self.editwin.set_line_and_column()
defclear_window(self,event):
#removeundodelegator
undo=self.editwin.undo
self.editwin.per.removefilter(undo)
#clearthewindow,butpreservecurrentcommand
self.text.delete(1.0,"iomarklinestart")
ifself.text.compare('insert','<','iomark'):
self.text.mark_set('insert','end-1c')
self.editwin.set_line_and_column()
#restoreundodelegator
self.editwin.per.insertfilter(undo)
C. 如何打開python shell
Windows啟動Python互動式解釋器有兩種方式。第一種方式是進入Pyhton的安裝目錄,直接運行python.exe程序;第二種方式是進入Windows命令行窗口,在命令行窗口啟動python.exe。步驟如下:
1、第一步 找到python.exe文件:
注意事項:
1、在Windows命令行窗口啟動Python互動式解釋器,首先需要將Python安裝目錄的路徑,添加到Path系統環境變數
2、可以啟動Python交互解釋器進行互動式編程,也可以用Python自帶的集成開發工具編寫Python程序
D. python 調用shell環境變數 和本地的不同
python -> shell:
1.環境變數
復制代碼代碼如下:
import os
var=123或var='123'
os.environ['var']=str(var) #environ的鍵值必須是字元串
os.system('echo $var')
復制代碼代碼如下:
import os
var=123或var='123'
os.environ['var']=str(var) #environ的鍵值必須是字元串
os.system('echo $var')
2.字元串連接
復制代碼代碼如下:
import os
path='/root/a.txt'
var=[1]
var='bash'
os.system('echo ' + path) #注意echo後有空格
os.system('echo ' + str(var[0]))
os.system('echo ' + var + ' /root/c.sh') #注意echo後和/root前有空格
復制代碼代碼如下:
import os
path='/root/a.txt'
var=[1]
var='bash'
os.system('echo ' + path) #注意echo後有空格
os.system('echo ' + str(var[0]))
os.system('echo ' + var + ' /root/c.sh') #注意echo後和/root前有空格
3.通過管道
復制代碼代碼如下:
import os
var='123'
os.popen('wc -c', 'w').write(var)
復制代碼代碼如下:
import os
var='123'
os.popen('wc -c', 'w').write(var)
4.通過文件
復制代碼代碼如下:
output = open('/tmp/mytxt', 'w')
output.write(S) #把字元串S寫入文件
output.writelines(L) #將列表L中所有的行字元串寫到文件中
output.close()
復制代碼代碼如下:
output = open('/tmp/mytxt', 'w')
output.write(S) #把字元串S寫入文件
output.writelines(L) #將列表L中所有的行字元串寫到文件中
output.close()
5.通過重定向標准備輸出
復制代碼代碼如下:
buf = open('/root/a.txt', 'w')
print >> buf, '123\n', 'abc'
復制代碼代碼如下:
buf = open('/root/a.txt', 'w')
print >> buf, '123\n', 'abc'
或
復制代碼代碼如下:
print >> open('/root/a.txt', 'w'), '123\n', 'abc' #寫入或生成文件
print >> open('/root/a.txt', 'a'), '123\n', 'abc' #追加
復制代碼代碼如下:
print >> open('/root/a.txt', 'w'), '123\n', 'abc' #寫入或生成文件
print >> open('/root/a.txt', 'a'), '123\n', 'abc' #追加
shell -> python:
1.管道
復制代碼代碼如下:
import os
var=os.popen('echo -n 123').read( )
print var
復制代碼代碼如下:
import os
var=os.popen('echo -n 123').read( )
print var
2.
復制代碼代碼如下:
import commands
var=commands.getoutput('echo abc') #輸出結果
var=commands.getstatusoutput('echo abc') #退出狀態和輸出結果
復制代碼代碼如下:
import commands
var=commands.getoutput('echo abc') #輸出結果
var=commands.getstatusoutput('echo abc') #退出狀態和輸出結果
3.文件
復制代碼代碼如下:
input = open('/tmp/mytxt', 'r')
S = input.read( ) #把整個文件讀到一個字元串中
S = input.readline( ) #讀下一行(越過行結束標志)
L = input.readlines( ) #讀取整個文件到一個行字元串的列表中
復制代碼代碼如下:
input = open('/tmp/mytxt', 'r')
S = input.read( ) #把整個文件讀到一個字元串中
S = input.readline( ) #讀下一行(越過行結束標志)
L = input.readlines( ) #讀取整個文件到一個行字元串的列表中
E. ipython如何將shell變數轉換為Python變數
有一個模塊,似乎叫environment,可以直接訪問shell里的環境變數。
F. 如何把python變數 傳給shell命令
變數前面用global聲明全局變數,運行文件後就能在shell裡面調用了
globala
a=1
G. python有沒有類似shell中 $#的變數來表示傳進來多少個參數。
用 len(sys.argv)-1 能得到用戶輸入的參數的個數,因為sys.argv的第一個元素總腳本名,所以要-1
H. 如何使用shell或python進行變數替換
echo $test
這是PHP吧?你確定要用python處理?
思路:
讀取a文件內容 遍歷每行內容
以單引號分割字元串 得到設置的值
按照b文件格式拼接出c文件的內容
最後生成或覆蓋c文件