您的位置 首页 > 数码极客

[如何制作xs脚本]如何制作脚本软件…

脚本写的好,下班下得早!程序员的日一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。 fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充: 针对 DataFrame 的重新索引操作 二、drop() 方法:丢弃数据 针对 Series 针对 DataFrame 不仅可以删除行,还可以删除列: 三、索引、选取和过滤 针对 Series 需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较: 赋值操作: 针对 DataFrame DataFrame 中的 ix 操作: 四、算术运算和数据对齐 针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA: 针对 DataFrame 对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集: 和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充: 五、函数应用和映射 将一个 lambda 表达式应用到每列数据里: 除了lambda 表达式还可以定义一个函数: 六、排序 针对 Series 针对 DataFrame 七、排名 八、带有重复值的轴索引 索引不强制唯一,例如一个重复索引的 Series: 一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。 fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充: 针对 DataFrame 的重新索引操作 二、drop() 方法:丢弃数据 针对 Series 针对 DataFrame 不仅可以删除行,还可以删除列: 三、索引、选取和过滤 针对 Series 需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较: 赋值操作: 针对 DataFrame DataFrame 中的 ix 操作: 四、算术运算和数据对齐 针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA: 针对 DataFrame 对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集: 和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充: 五、函数应用和映射 将一个 lambda 表达式应用到每列数据里: 除了lambda 表达式还可以定义一个函数: 六、排序 针对 Series 针对 DataFrame 七、排名 八、带有重复值的轴索引 索引不强制唯一,例如一个重复索引的 Series: 一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。 fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充: 针对 DataFrame 的重新索引操作 二、drop() 方法:丢弃数据 针对 Series 针对 DataFrame 不仅可以删除行,还可以删除列: 三、索引、选取和过滤 针对 Series 需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较: 赋值操作: 针对 DataFrame DataFrame 中的 ix 操作: 四、算术运算和数据对齐 针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA: 针对 DataFrame 对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集: 和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充: 五、函数应用和映射 将一个 lambda 表达式应用到每列数据里: 除了lambda 表达式还可以定义一个函数: 六、排序 针对 Series 针对 DataFrame 七、排名 八、带有重复值的轴索引 索引不强制唯一,例如一个重复索引的 Series: 一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。 fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充: 针对 DataFrame 的重新索引操作 二、drop() 方法:丢弃数据 针对 Series 针对 DataFrame 不仅可以删除行,还可以删除列: 三、索引、选取和过滤 针对 Series 需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较: 赋值操作: 针对 DataFrame DataFrame 中的 ix 操作: 四、算术运算和数据对齐 针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA: 针对 DataFrame 对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集: 和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充: 五、函数应用和映射 将一个 lambda 表达式应用到每列数据里: 除了lambda 表达式还可以定义一个函数: 六、排序 针对 Series 针对 DataFrame 七、排名 八、带有重复值的轴索引 索引不强制唯一,例如一个重复索引的 Series: 一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。 fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充: 针对 DataFrame 的重新索引操作 二、drop() 方法:丢弃数据 针对 Series 针对 DataFrame 不仅可以删除行,还可以删除列: 三、索引、选取和过滤 针对 Series 需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较: 赋值操作: 针对 DataFrame DataFrame 中的 ix 操作: 四、算术运算和数据对齐 针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA: 针对 DataFrame 对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集: 和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充: 五、函数应用和映射 将一个 lambda 表达式应用到每列数据里: 除了lambda 表达式还可以定义一个函数: 六、排序 针对 Series 针对 DataFrame 七、排名 八、带有重复值的轴索引

索引不强制唯一,例如一个重复索引的 Series:常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作。

例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。完成这个任务,如果一味希望采用编译型语言来编写这样的代码,实践中的时间和精力是不够的,这个时候就需要发挥脚本的神奇作用!毫不夸张的说,能否写出高效实用的脚本代码,直接影响着一个程序员的幸福生活 [下班时间]。下面整理 8 个实用的 Python 脚本,需要的时候改改直接用,建议收藏!

1. 解决 linux 下 unzip 乱码的问题。

import os import sys import zipfile import argparse s = '\\x1b[%d;%dm%s\\x1b[0m' def unzip ( path ): file = zipfile . ZipFile ( path , "r" ) if args . secret : file . setpassword ( args . secret ) for name in file . namelist (): try : utf8name = name . decode ( 'gbk' ) pathname = os . path . dirname ( utf8name ) except : utf8name = name pathname = os . path . dirname ( utf8name ) #print s % (1, 92, ' >> extracting:'), utf8name #pathname = os.(utf8name) if not os . path . exists ( pathname ) and pathname != "" : os . makedirs ( pathname ) data = file . read ( name ) if not os . path . exists ( utf8name ): try : fo = open ( utf8name , "w" ) fo . write ( data ) fo . close except : pass file . close () def main ( argv ): ###################################################### # for argparse p = argparse . ArgumentParser ( description = '解决unzip乱码' ) p . add_argument ( 'xxx' , type = str , nargs = '*' , \ help = '命令对象.' ) p . add_argument ( '-s' , '--secret' , action = 'store' , \ default = None , help = '密码' ) global args args = p . parse_args ( argv [ 1 :]) xxx = args . xxx for path in xxx : if path . endswith ( '.zip' ): if os . path . exists ( path ): print s % ( 1 , 97 , ' ++ unzip:' ), path unzip ( path ) else : print s % ( 1 , 91 , ' !! file doesn\'t exist.' ), path else : print s % ( 1 , 91 , ' !! file isn\'t a zip file.' ), path if __name__ == '__main__' : argv = sys . argv main ( argv )

2. 统计当前根目录代码行数。

# coding=utf-8 import os import time # 设定根目录 basedir = './' filelists = [] # 指定想要统计的文件类型 whitelist = [ 'cpp' , 'h' ] #遍历文件, 递归遍历文件夹中的所有 def getFile ( basedir ): global filelists for parent , dirnames , filenames in os . walk ( basedir ): for filename in filenames : ext = filename . split ( '.' )[- 1 ] #只统计指定的文件类型,略过一些log和cache文件 if ext in whitelist : filelists . append ( os . path . join ( parent , filename )) #统计一个的行数 def countLine ( fname ): count = 0 # 把文件做二进制看待,read. for file_line in open ( fname , 'rb' ). readlines (): if file_line != '' and file_line != '\n' : #过滤掉空行 count += 1 print ( fname + '----' , count ) return count if __name__ == '__main__' : startTime = time . clock () getFile ( basedir ) totalline = 0 for filelist in filelists : totalline = totalline + countLine ( filelist ) print ( 'total lines:' , totalline ) print ( 'Done! Cost Time: %0.2f second' % ( time . clock () - startTime ))

3. 扫描当前目录和所有子目录并显示大小。

import os import sys try : directory = sys . argv [ 1 ] except IndexError : sys . exit ( "Must provide an argument." ) dir_size = 0 fsizedicr = { 'Bytes' : 1 , 'Kilobytes' : float ( 1 ) / 1024 , 'Megabytes' : float ( 1 ) / ( 1024 * 1024 ), 'Gigabytes' : float ( 1 ) / ( 1024 * 1024 * 1024 )} for ( path , dirs , files ) in os . walk ( directory ): for file in files : filename = os . path . join ( path , file ) dir_size += os . path . getsize ( filename ) fsizeList = [ str ( round ( fsizedicr [ key ] * dir_size , 2 )) + " " + key for key in fsizedicr ] if dir_size == 0 : print ( "File Empty" ) else : for units in sorted ( fsizeList )[::- 1 ]: print ( "Folder Size: " + units )

4. 将源目录 240 天以上的所有文件移动到目标目录。

import shutil import sys import time import os import argparse usage = 'python move_ -src [SRC] -dst [DST] -days [DAYS]' description = 'Move files from src to dst if they are older than a certain number of days. Default is 240 days' args_parser = argparse . ArgumentParser ( usage = usage , description = description ) args_parser . add_argument ( '-src' , '--src' , type = str , nargs = '?' , default = '.' , help = '(OPTIONAL) Directory where files will be moved from. Defaults to current directory' ) args_parser . add_argument ( '-dst' , '--dst' , type = str

一、reindex() 方法:重新索引

针对 Series 的重新索引操作 重新索引指的是根据index参数重新进行排序。如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行。不想用缺失值,可以用 fill_value 参数指定填充值。

,

fill_value 会让所有的缺失值都填充为同一个值,如果不想这样而是用相邻的元素(左或者右)的值填充,则可以用 method 参数,可选的参数值为 ffill 和 bfill,分别为用前值填充和用后值填充:


针对 DataFrame 的重新索引操作


二、drop() 方法:丢弃数据

针对 Series


n

针对 DataFrame

不仅可以删除行,还可以删除列:


a

三、索引、选取和过滤

针对 Series


r

需要注意一点的是,利用索引的切片运算与普通的 Python 切片运算不同,其末端是包含的,既包含最后一个的项。比较:


g

赋值操作:


s

针对 DataFrame


DataFrame 中的 ix 操作:


=

四、算术运算和数据对齐

针对 Series 将2个对象相加时,具有重叠索引的索引值会相加处理;不重叠的索引则取并集,值为 NA:


针对 DataFrame

对齐操作会同时发生在行和列上,把2个对象相加会得到一个新的对象,其索引为原来2个对象的索引的并集:


'

和Series 对象一样,不重叠的索引会取并集,值为 NA;如果不想这样,试试使用 add() 方法进行数据填充:


?

五、函数应用和映射

将一个 lambda 表达式应用到每列数据里:


'

除了lambda 表达式还可以定义一个函数:


六、排序

针对 Series


,

针对 DataFrame


七、排名


八、带有重复值的轴索引

索引不强制唯一,例如一个重复索引的 Series:


r

equired = True , help = '(REQUIRED) Directory where files will be moved to.' ) args_parser . add_argument ( '-days' , '--days' , type = int , nargs = '?' , default = 240 , help = '(OPTIONAL) Days value specifies the minimum age of files to be moved. Default is 240.' ) args = args_parser . parse_args () if args . days < 0 : args . days = 0 src = args . src # 设置源目录 dst = args . dst # 设置目标目录 days = args . days # 设置天数 now = time . time () # 获得当前时间 if not os . path . exists ( dst ): os . mkdir ( dst ) for f in os . listdir ( src ): # 遍历源目录所有文件 if os . stat ( f ). st_mtime < now - days * 86400 : # 判断是否超过240天 if os . path . isfile ( f ): # 检查是否是文件 shutil . move ( f , dst ) # 移动文件

5. 扫描脚本目录,并给出不同类型脚本的计数。

import os import shutil from time import strftime logsdir = "c:\logs\puttylogs" zipdir = "c:\logs\puttylogs\zipped_logs" zip_program = "zip.exe" for files in os . listdir ( logsdir ): if files . endswith ( ".log" ): files1 = files + "." + strftime ( "%Y-%m-%d" )+ ".zip" os . chdir ( logsdir ) os . system ( zip_program + " " + files1 + " " + files ) shutil . move ( files1 , zipdir ) os . remove ( files )

6. 下载 Leetcode 的算法题。

import sys import re import os import argparse import requests from lxml import html as lxml_html try : import html except ImportError : import HTMLParser html = HTMLParser . HTMLParser () try : import cPickle as pk except ImportError : import pickle as pk class LeetcodeProblems ( object ): def get_problems_info ( self ): leetcode_url = '; res = requests . get ( leetcode_url ) if not res . ok : print ( 'request error' ) sys . exit () cm = res . text cmt = cm . split ( 'tbody>' )[- 2 ] indexs = re . findall ( r '<td>(\d+)</td>' , cmt ) problem_urls = [ '; + url \ for url in re . findall ( r '<a href="(/problems/.+?)"' , cmt )] levels = re . findall ( r "<td value='\d*'>(.+?)</td>" , cmt ) tinfos = zip ( indexs , levels , problem_urls ) assert ( len ( indexs ) == len ( problem_urls ) == len ( levels )) infos = [] for info in tinfos : res = requests . get ( info [- 1 ]) if not res . ok : print ( 'request error' ) sys . exit () tree = lxml_html . fromstring ( res . text ) title = tree . xpath ( '//meta[@property="og:title"]/@content' )[ 0 ] description = tree . xpath ( '//meta[@property="description"]/@content' ) if not description : description = tree . xpath ( '//meta[@property="og:description"]/@content' )[ 0 ] else : description = description [ 0 ] description = html . unescape ( description . strip ()) tags = tree . xpath ( '//div[@id="tags"]/following::a[@class="btn btn-xs btn-primary"]/text()' ) infos . append ( { 'title' : title , 'level' : info [ 1 ], 'index' : int ( info [ 0 ]), 'description' : description , 'tags' : tags } ) with open ( 'leecode_; , 'wb' ) as g : pk . dump ( infos , g ) return infos def to_text ( self , pm_infos ): if self . args . index : key = 'index' elif self . args . title : key = 'title' elif self . args . tag : key = 'tags' elif self . args . level : key = 'level' else : key = 'index' infos = sorted ( pm_infos , key = lambda i : i [ key ]) text_template = '## {index} - {title}\n' \ '~{level}~ {tags}\n' \ '{description}\n' + '\n' * self . args . line text = '' for info in infos : if self . args . rm_blank : info [ 'description' ] = re . sub ( r '[\n\r]+' , r '\n' , info [ 'description' ]) text += text_template . format (** info ) with open ( 'leecode ; , 'w' ) as g : g . write ( text ) def run ( self ): if os . path . exists ( 'leecode_; ) and not self . args . redownload : with open ( 'leecode_; , 'rb' ) as f : pm_infos = pk . load ( f ) else : pm_infos = self . get_problems_info () print ( 'find %s problems.' % len ( pm_infos )) self . to_text ( pm_infos ) def handle_args ( argv ): p = argparse . ArgumentParser ( description = 'extract all leecode problems to location' ) p . add_argument ( '--index' , action = 'store_true' , help = 'sort by index' ) p . add_argument ( '--level' , action = 'store_true' , help = 'sort by level' ) p . add_argument ( '--tag' , action = 'store_true' , help = 'sort by tag' ) p . add_argument ( '--title' , action = 'store_true' , help = 'sort by title' ) p . add_argument ( '--rm_blank' , action = 'store_true' , help = 'remove blank' ) p . add_argument ( '--line' , action = 'store' , type = int , default = 10 , help = 'blank of two problems' ) p . add_argument ( '-r' , '--redownload' , action = 'store_true' , help = 'redownload data' ) args = p . parse_args ( argv [ 1 :]) return args def main ( argv ): args = handle_args ( argv ) x = LeetcodeProblems () x . args = args x . run () if __name__ == '__main__' : argv = sys . argv main ( argv )

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何制作xs脚本,如何制作脚本软件,如何制作游戏脚本,如何制作脚本,如何制作脚本教程视频”边界阅读