我是靠谱客的博主 懵懂小刺猬,最近开发中收集的这篇文章主要介绍python编程格式_Python编程模板记录【不断更新...】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在写python脚本的时候可以套用模板+一些处理的语句例子更快的写好程序,因此想到来写这样的文章来与大家分享,有不足之处欢迎大家指出~

首先放上我最常用的几个模板:

模板一

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Date : 2020-03-13

# Author : Myshu

# Mail : myshu0601@qq.com

# Version : 1.0

from __future__ import print_function

import getopt

import sys

import time

try:

from Bio import AlignIO, SeqIO

except ImportError:

sys.stderr.write("Error! BioPython is not detected!n")

sys.exit(1)

def usage():

print ( 'Usage: n'

' -h | --help help n'

' -i input old bms.infon'

' -n input new bms.infon'

' -t tags file dirn'

' -o output final bms.infon'

'')

oldbms = ''

newbms = ''

tags_dir = ''

outputfile = ''

try:

opts, args = getopt.getopt(sys.argv[1:], "hi:n:t:o:", ["help"])

except getopt.GetoptError:

print ('getopt error!')

usage()

sys.exit(1)

for opt,arg in opts:

if opt in ('-h','--help'):

usage()

sys.exit(1)

elif opt in ('-i'):

oldbms = arg

elif opt in ('-n'):

newbms = arg

elif opt in ('-t'):

tags_dir = arg

elif opt in ('-o'):

outputfile = arg

# check the args

if oldbms=='':

print('ERROR: There must be a oldbms file!')

usage()

sys.exit(1)

if newbms=='':

print('ERROR: There must be a newbms file!')

usage()

sys.exit(1)

if tags_dir=='':

print('ERROR: There must be a tags_dir!')

usage()

sys.exit(1)

if outputfile=='':

print('ERROR: There must be a outputfile!')

usage()

sys.exit(1)

#------ def --------------------

# 打印当前时间的函数 2020-03-12 15:26:58

def PrintTime():

now = int(round(time.time() * 1000))

time_now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now / 1000))

# 设置输出字体为浅蓝色,调色可以参照链接:https://www.cnblogs.com/fangbei/p/python-print-color.html

time_now = "33[0;36;40m" + time_now + "33[0m"

return time_now

#------ main -------------------

print(PrintTime())

模板二

#!/usr/bin/env python3

"""

Usage: python3

"""

import subprocess

import sys

import os.path

from util import get_config

from BioUtil import xzopen, fastaFile

if len(sys.argv) != 5:

sys.exit(__doc__)

conf_file, taglist, out_dir, prefix = sys.argv[1:5]

# 传递参数,将参数存入字典

conf = get_config(conf_file, 'Module')

tag_num = int(conf['Number'])

我比较喜欢模板一,因为格式比较规范~

有了模板之后,就可以根据具体的处理方法对文件进行处理了,这里我根据自己平时写代码时候的习惯,收集了一些不同的处理语句(要注意语句中的变量需要自己调整),打算之后不断更新:

1、文件读写

文件句柄:'r' 、'w'、'a'(追加)、'+'(可读可写)、'b'(二进制形式)、'v'(替换为n)

# -------------- 1. 读取文件 --------------

# 1). 使用for语句

for line in open("Test_file.txt"):

print line, ## 去掉每行自身的换行符

print line.strip() ## 去掉每行自身的换行符

# 2). 使用with文件句柄

with open(inputfile) as f:

seqs = SeqIO.parse(f, "fasta")

for seq in seqs:

seq.id

seq.seq

len(seq)

samps = ((seq.name, seq.seq) for seq in sample(list(seqs),number))

for samp in samps:

print(">{}n{}".format(*samp), file=output)

output.close() ##文件操作完成后必须关闭文件句柄

# 3). 读取打包gz文件

import gzip

from Bio import SeqIO

with gzip.open("test.fasta.gz", "rt") as handle:

for record in SeqIO.parse(handle, "fasta"):

print(record.id)

# -------------- 2. 读取文件夹 --------------

# read tags dir : =>

dirs = os.listdir(tags_dir)

OldTags={}

for tags in dirs:

searchObj = re.search(r'^(.*).fa.gz$',tags)

if (searchObj):

# print(searchObj.group())

OldTags[searchObj.group(1)] = tags_dir + "/" + tags

# -------------- 3. 写入文件 --------------

output = open(outputfile, "w")

output.writelines(str.list) #将字符串列表写入文件

output.write(str) #把一个字符串写入文件

2、提取文件名或后缀

file = os.path.basename(outputfile)

dirname = os.path.dirname(outputfile)

name, ext = os.path.splitext(file)

# name C:/test_txt

# ext .png

3、判断文件夹/文件是否存在

import os

# 判断文件夹是否存在,不存在则创建,存在则删除再创建

if not os.path.exists(out_tags_dir):

os.makedirs(out_tags_dir)

else:

shutil.rmtree(out_tags_dir)

os.makedirs(out_tags_dir)

# 判断文件是否存在,存在则删除

if os.path.exists(Pathbms[Name]):

os.remove(Pathbms[Name])

4、正则匹配和替换

# 判断当前行开头是否为‘#’

if (line.startswith('#')):

print line

# 判断字符串中是否有子字符串

if '.' in name:

print("No '.' in Names!")

exit(0)

# 字符替换

name = name.replace(".","_")

#去除空行

import re

for line in open(file):

if re.match('^s*$', line):

continue

5、去除字符串空白

"···xyz···".strip() # returns "xyz"

"···xyz···".lstrip() # returns "xyz···"

"···xyz···".rstrip() # returns "···xyz"

"··x·y·z··".replace(' ', '') # returns "xyz"

6、不断循环

# 不建议使用递归函数进行循环,因为递归函数会导致栈溢出

# 不管运行是否报错均可执行,可以加入break,自动停止,否则会一直运行下去

while True:

try:

x = int(input('Please enter a number: '))

#break

except Exception:

print('That was no valid number.')

7、读取shell脚本,并获取返回值

cmd = f"grep "TotalReads " {fq1_data_path}/*.report|awk 'NR==1{{a=$2*4/40000000;print int(a)==(a)?int(a):int(a)+1}}'"

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

stdout, stderr = p.communicate()

file_num = stdout.decode("utf-8")

file_num = int(file_num.strip())

print(file_num)

最后

以上就是懵懂小刺猬为你收集整理的python编程格式_Python编程模板记录【不断更新...】的全部内容,希望文章能够帮你解决python编程格式_Python编程模板记录【不断更新...】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部