python獲取腳本名
A. python讀取腳本所在目錄文件名,放到aa.txt文件中,然後讀取aa.txt文件的每
多了個換行符 你第二次打開文件之前,先把換行符去掉。
import os
path = os.getcwd()
for filename in os.listdir(path):
f = open('aa.txt','a')
f.write(filename)
f.write("\n")
f.close()
f = open('aa.txt')
line = f.readline()
while line:
inFile = line.strip('\n')
if inFile:
filehandle = open(inFile)
line = f.readline()
f.close()
filehandle.close()
B. python腳本文件的擴展名是什麼
python程序的擴展名有.py、.pyc、.pyo和.pyd。.py是源文件,.pyc是源文件編譯後的文件,.pyo是源文件優化編譯後的文件,.pyd是其他語言寫的python庫。
C. python3.4中fib(int(sys.argv[1]))是什麼意思如圖
就是調用fib函數
#可以分開表示成:
n=int(sys.argv[1])
#[pythonfibo.py1]這么執行
#sys.argv裡面存放的是命令行參數,argv[0]是腳本名(fibo.py),argv[1]里是第一個參數(1),因為獲取的是字元串,所以int轉為整形
fib(n)
如果解決了您的問題請採納!
如果未解決請繼續追問
D. Python3腳本傳參實戰(2個方法3個傳參列表的案例)
在一些測試平台對接時或者用例執行時,或多或少會用到Python腳本傳參的問題。
test.py腳本
#!/usr/bin/python3
import sys
print ('參數個數為:', len(sys.argv), '個參數。')
print ('參數列表:', str(sys.argv))
print ('腳本名:', str(sys.argv[0]))
print ('第一個參數:', sys.argv[1])
執行python3 test.py arg1 arg2 arg3
參數個數為: 4 個參數。
參數列表: ['test.py', 'arg1', 'arg2', 'arg3']
腳本名: test.py
第一個參數: arg1
test.py腳本
#!/usr/bin/python3
import argparse
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--name', '-n', help='name屬性,非必要參數')
parser.add_argument('--year', '-y', help='year 屬性,非必要參數,但有默認值', default=2017)
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.year, args.name, args.body)
查看幫助python3 test.py --help
usage: test.py [-h] [--name NAME] [--year YEAR] --body BODY
Test for argparse
optional arguments:
-h, --help show this help message and exit
--name或-n NAME name屬性,非必要參數
--year或-y YEAR year屬性,非必要參數,但有默認值
--body或-b BODY body 屬性,必要參數
執行python3 test.py --year 2021 -n robot --body "are you ok?"
2021 robot are you ok?
以方法2中的test.py腳本為例
python3 test.py --year 2021 --body [\"test\", \"robot\",\"boy\" ]
2021 ["test", "robot", "boy" ]
以方法1中的test.py腳本為例
python3 test.py [\"test\", \"robot\",\"boy\" ]
參數個數為: 2個參數。
參數列表: ['test.py', '[\"test\", \"robot\", \"boy\" ]']
腳本名: test.py
第一個參數: ["test", "robot", "boy" ]
其實此時傳入的第一個參數是一個字元,需要轉換為列表。
import json
json.loads(sys.argv[1])
test_arg.py腳本
#!/usr/bin/python3
import argparse
import os
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.body)
command=python3 + ' ' + test_sys.py+ ' ' + args.body
print (command)
str=('command')
result=os.system(str)
test_sys.py腳本
#!/usr/bin/python3
import sys
import json
print ('第一個參數:', sys.argv[1])
print ('列表:', json.loads(sys.argv[1]))
執行python3 test_arg.py --body [\"test\", \"robot\",\"boy\" ]
python3 test_sys.py ["test", "robot", "boy" ]
test_sys.py執行報錯,轉json失敗。
還記得我們案例2中,腳本的傳入指定參數和實際傳入參數嘛?
test_arg.py腳本我們稍微優化下,在傳參前先字元替換下。
["test", "robot", "boy" ]轉換為[\"test\", \"robot\",\"boy\" ]即可。
command.replace(' " ' , r ' \" ') 添加到command=之後,再次運行看看呢?
E. 如何用python得到當前運行的腳本的PID
保存為.py文件後 運行腳本在後面添加進程名稱即可 比如:python proinfo.py qq 即可獲取QQ的進程信息,注意不區分大小寫
復制代碼代碼如下:
#-*- encoding:UTF-8 -*-
import os
import sys
import string
import psutil
import re
def get_pid(name):
process_list = psutil.get_process_list()
regex = "pid=(\d+),\sname=\'" + name + "\'"
print regex
pid = 0
for line in process_list:
process_info = str(line)
ini_regex = re.compile(regex)
result = ini_regex.search(process_info)
if result != None:
pid = string.atoi(result.group(1))
print result.group()
break
def main(argv):<br>name = argv[1]<br>get_pid(name)
if __name__ == "__main__":
main(sys.argv)
代碼說明:
1.import psutil 需要安裝,用於獲取linux下進程列表
復制代碼代碼如下:
process_list = psutil.get_process_list() #獲取進程列表
2.import re: python處理正則的模塊
復制代碼代碼如下:
regex = "pid=(\d+),\sname=\'" + name + "\'" #組成string類型的正則表達式
ini_regex = re.compile(regex)#初始化正則表達式
result = ini_regex.search(process_info)#正則表達式匹配
result.group(0):匹配到的整個字元串的內容
result.group(1):匹配第一個()中的內容
F. python的腳本文件的擴展名是pyd
擴展名說明
1、通常寫Python腳本都是以.py為擴展名,.pyc二進制文件可以反編譯成.py文件。
2、反編譯軟體叫EasyPythonDecompiler,可以反編譯一個文件,也可以是一個文件夾。
G. python腳本怎麼獲取遠程linux伺服器的進程名
進程信息
/proc目錄包含了所有正運行的進程目錄。這些目錄的名字和進程的標識符是一樣的。所以,如果你遍歷/proc目錄下那些使用數字作為它們的名字的目錄,你就會獲得所有現在正在運行的進程列表。在下面的代碼中process_list()函數返回所有現在正在運行的進程的標識符列表。當你執行這個程序後,這個列表的長度就是在系統上運行的總進程數。
復制代碼 代碼如下:
#!/usr/bin/env python
"""
List of all process IDs currently active
"""
from __future__ import print_function
import os
def process_list():
pids = []
for subdir in os.listdir('/proc'):
if subdir.isdigit():
pids.append(subdir)
return pids
if __name__=='__main__':
pids = process_list()
print('Total number of running processes:: {0}'.format(len(pids)))
上面的程序當執行後會顯示和下面類似的輸出:
復制代碼 代碼如下:
Total number of running processes:: 229
每個進程目錄包含了一些其他文件和目錄,如進程命令的調用,它正使用的共享庫以及其它的。
建議看看《Linux就該這么學》這本書
H. python3怎麼讀取命令行參數
數1: sys.argv[1]
參數2: sys.argv[2]
test.py
1 import sys
2 print "腳本名:", sys.argv[0]
3 for i in range(1, len(sys.argv)):
4 print "參數", i, sys.argv[i]
>>>python test.py hello world
腳本名:test.py
參數 1 hello
參數 2 world
python中使用命令行選項:
例如我們需要一個convert.py腳本。它的作用是處理一個文件,並將處理後的結果輸出到另一個文件中。
要求該腳本滿足以下條件:
1.通過-i -o選項來區別參數是輸入文件還是輸出文件.
>>> python convert.py -i inputfile -o outputfile
2.當不知道convert.py需要哪些參數時,用-h列印出幫助信息
>>> python convert.py -h
getopt函數原形:
getopt.getopt(args, options[, long_options])
I. 如何用python得到當前運行的腳本的PID
shell腳本獲取自己的pid是 $$ 變數 python腳本獲取自己運行的pid是 os.getpid()函數 可以參考下面的示例代碼 shell腳本 #! /bin/shecho $$python腳本 import osprint os.getpid()
