导航:首页 > 编程语言 > python文件名参数

python文件名参数

发布时间:2023-05-14 17:33:13

python怎样接收参数

Python中函数参数的传递是通过“赋值”来传递的,函数参数的接收传递有四种形式:

1. F(arg1,arg2,...)

2. F(arg2=,arg3=...)

3. F(*arg1)

4. F(**arg1)

第1
种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。也就是说形参和实参的个数必须一致,而且想给形参1的值必须是实参中的第一位,形参与实参之间是一一对应的关系,即“形参1=实参1
形参2=实参2...”。很明显这是一种非常不灵活的形式。比如:"def addOn(x,y): return x +
y",这里定义的函数addOn,可以用addOn(1,2)的形式调用,意味着形参x将取值1,主将取值2。addOn(1,2,3)和addOn
(1)都是错误的形式。

第2种方式比第1种方式好一点,在定义的时候已经给各个形参定义了默认值。因此,在调用这种函数时,如果没有给对应的形式参数传递实参,那么这个形参就将使用默认值。比如:“def
addOn(x=3,y=5): return x +
y”,那么addOn(6,5)的调用形式表示形参x取值6,y取值5。此外,addOn(7)这个形式也是可以的,表示形参x取值7,y取默认值5。这时候会出现一个问题,如果想让x取默认值,用实参给y赋值怎么办?前面两种调用形式明显就不行了,这时就要用到Python中函数调用方法的另一大绝招
──关健字赋值法。可以用addOn(y=6),这时表示x取默认值3,而y取值6。这种方式通过指定形式参数可以实现可以对形式参数进行“精确攻击”,一个副带的功能是可以不必遵守形式参数的前后顺序,比如:addOn(y=4,x=6),这也是可以的。这种通过形式参数进行定点赋值的方式对于用第1种方式定义的函数也是适用的。

上面两种方式定义的形式参数的个数都是固定的,比如定义函数的时候如果定义了5个形参,那么在调用的时候最多也只能给它传递5个实参。但是在实际编程中并不能总是确定一个函数会有多少个参数。第3种方式就是用来应对这种情况的。它以一个*加上形参名的方式表示,这个函数实际参数是不一定的,可以是零个,也可以是N个。不管是多少个,在函数内部都被存放在以形参名为标识符的tuple中。比如:

对这个函数的调用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的。

与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中。这时候调用函数必须采用key1=value1、key2=value2...的形式。比如:

1. def addOn(**arg):

2. sum = 0

3. if len(arg) == 0: return 0

4. else:

5. for x in arg.itervalues():

6. sum += x

7. return sum

那么对这个函数的调用可以用addOn()或诸如addOn(x=4,y=5,k=6)等的方式调用。

上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式。在定义或调用这种函数时,要遵循以下规则:

1. arg=必须在arg后

2. *arg必须在arg=后

3. **arg必须在*arg后

在函数调用过程中,形参赋值的过程是这样的:

首先按顺序把“arg”这种形式的实参给对应的形参

第二,把“arg=”这种形式的实参赋值给形式

第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参

第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。

听起来好复杂,实际是是很简单的。很直观,来看例子:

1. def test(x,y=5,*a,**b):

2. print x,y,a,b

就这么一个简单函数,来看看下面对这个函数调用会产生什么结果:

test(1) ===> 1 5 () {}

test(1,2) ===> 1 2 () {}

test(1,2,3) ===> 1 2 (3,) {}

test(1,2,3,4) ===> 1 2 (3,4)

test(x=1) ===> 1 5 () {}

test(x=1,y=1) ===> 1 1 () {}

test(x=1,y=1,a=1) ===> 1 1 () {'a':1}

test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1}

test(1,y=1) ===> 1 1 () {}

test(1,2,y=1) ===> 出错,说y给赋了多个值

test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1}

test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}

② python参数,解包,变量!

  1. "from sys import argv" 这一行允许你使用argv这个内建变量。你看这个argv其实在下一行中未经定义就使用了,这就是import的作用所在。

  2. script, first, second, third = argv 简单说来,运行这一行的结果是,script是脚本(xxx.py)文件名,first, second, third分别是第1,2,3个命令行参数。

对于命令“python ex13.py 1 2 3",得到的结果应该是script - 'ex13.py', first - '1', second - '2', third - '3'

命令行参数只是一种习惯用法,本身没有任何神秘之处。如果题主实在不知道”我为啥要用到这玩意?“,我的建议是先放一下,知道有这么回事,等以后用到的时候就自然理解了。

③ python调用系统参数问题

import sys
def spfile(infile,linesize=1000):
sp_file = open(infile,'r')
flag = True
i = 1
c = 0
while flag:
if i <= linesize:
line = sp_file.readline()
out_file='outfile_' + str(c) + '.txt'
open(out_file,'a').write(line)
i+=1
elif len(line)==0:
flag=False
else:
i=1
c+=1
continue

if __name__ == '__main__':
spfile(sys.argv[0], int(sys.argv[1]))

④ python怎么获得文件夹名字

本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名。

一、os.walk()

模块os中的walk()函数可以遍历文件夹下所有的文件。
[python] view plain
os.walk(top, topdown=Ture, onerror=None, followlinks=False)

该函数可以得到一个三元tupple(dirpath, dirnames, filenames).

参数含义:

dirpath:string,代表目录的路径;
dirnames:list,包含了当前dirpath路径下所有的子目录名字(不包含目录路径);
filenames:list,包含了当前dirpath路径下所有的非目录子文件的名字(不包含目录路径)。

注意,dirnames和filenames均不包含路径信息,如需完整路径,可使用os.path.join(dirpath, dirnames)

下面给出代码;

[python] view plain
# -*- coding: utf-8 -*-

import os

def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
print(root) #当前目录路径
print(dirs) #当前路径下所有子目录
print(files) #当前路径下所有非目录子文件

当需要特定类型的文件时,代码如下:

[python] view plain
# -*- coding: utf-8 -*-

import os

def file_name(file_dir):
L=[]
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.jpeg':
L.append(os.path.join(root, file))
return L

其中os.path.splitext()函数将路径拆分为文件名+扩展名,例如os.path.splitext(“E:/lena.jpg”)将得到”E:/lena“+".jpg"。

二、os.listdir()

os.listdir()函数得到的是仅当前路径下的文件名,不包括子目录中的文件,所有需要使用递归的方法得到全部文件名。

直接给出代码,函数将返回类型为‘.jpeg’个文件名:

[python] view plain
# -*- coding: utf-8 -*-
import os

def listdir(path, list_name):
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
listdir(file_path, list_name)
elif os.path.splitext(file_path)[1]=='.jpeg':
list_name.append(file_path)

⑤ python参数如果是xml字符串,该怎么写

调用Python脚本时传递XML字符串作为参数可能会导致错误,因为某些特殊字符可能被操作系统或Python解释器解释为命令或代码。为配备升了避免这个问题,可以将XML字符串作为滚枝一个文本文件传递,或者使用base64编码将字符串编码为非特殊字符。下面是两种方法的示例。

方法一:将XML字符串保存到文件,并将文件名作为参数传递:

import sys

import xml.etree.ElementTree as ET

filename = sys.argv[1]

with open(filename, 'r') as file:

xml_string = file.read()

xml_root = ET.fromstring(xml_string)

import base64

xml_string = '<?xml version="1.0" encoding="UTF-8"?>...'

encoded_xml = base64.b64encode(xml_string.encode()).decode()

import sys

import base64

import xml.etree.ElementTree as ET

encoded_xml = sys.argv[1]

decoded_xml = base64.b64decode(encoded_xml.encode()).decode()

xml_root = ET.fromstring(decoded_xml)

⑥ 怎么把文件名以参数的方式传入python脚本

作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队、CBA明星、枝好花边新闻、球鞋美女等等,如果一张张右键另存为的话真是手都点疼了。作为程序员还是写个程序来进行吧!

所以我通过Python+Selenium+正则表达式+urllib2进行海量图片爬取。

运行效果:

http://photo.hupu.com/nba/tag/马刺

http://photo.hupu.com/nba/tag/陈露

源代码:

# -*- coding: utf-8 -*-
"""
Crawling pictures by selenium and urllib
url: 虎扑 马刺 http://photo.hupu.com/nba/tag/%E9%A9%AC%E5%88%BA
url: 虎扑 陈露 http://photo.hupu.com/nba/tag/%E9%99%88%E9%9C%B2
Created on 2015-10-24
@author: Eastmount CSDN
"""

import time
import re
import os
import sys
import urllib
import shutil
import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains

#Open PhantomJS
driver = webdriver.PhantomJS(executable_path="G:phantomjs-1.9.1-windowsphantomjs.exe")
#driver = webdriver.Firefox()
wait = ui.WebDriverWait(driver,10)

#Download one Picture By urllib
def loadPicture(pic_url, pic_path):
pic_name = os.path.basename(pic_url) #删除路径获取图片名字
pic_name = pic_name.replace('*','') #去除'*' 防止错误 invalid mode ('wb') or filename
urllib.urlretrieve(pic_url, pic_path + pic_name)


#爬猛败铅取具体的图片及下一张
def getScript(elem_url, path, nums):
try:
#由于链接 http://photo.hupu.com/nba/p29556-1.html
#只需拼接 http://..../p29556-数字.html 省略了自动点击"下一张"操作
count = 1
t = elem_url.find(r'.html')
while (count <= nums):
html_url = elem_url[:t] + '-' + str(count) + '.html'
#print html_url
'''
driver_pic.get(html_url)
elem = driver_pic.find_element_by_xpath("//div[@class='pic_bg']/div/img")
url = elem.get_attribute("src")
'''
#采用正则表达式获取第3个<div></div> 再获取枯数图片URL进行下载
content = urllib.urlopen(html_url).read()
start = content.find(r'<div class="flTab">')
end = content.find(r'<div class="comMark" style>')
content = content[start:end]
div_pat = r'<div.*?>(.*?)</div>'
div_m = re.findall(div_pat, content, re.S|re.M)
#print div_m[2]
link_list = re.findall(r"(?<=href=").+?(?=")|(?<=href=').+?(?=')", div_m[2])
#print link_list
url = link_list[0] #仅仅一条url链接
loadPicture(url, path)
count = count + 1

except Exception,e:
print 'Error:',e
finally:
print 'Download ' + str(count) + ' pictures '


#爬取主页图片集的URL和主题
def getTitle(url):
try:
#爬取URL和标题
count = 0
print 'Function getTitle(key,url)'
driver.get(url)
wait.until(lambda driver: driver.find_element_by_xpath("//div[@class='piclist3']"))
print 'Title: ' + driver.title + ' '

#缩略图片url(此处无用) 图片数量 标题(文件名) 注意顺序
elem_url = driver.find_elements_by_xpath("//a[@class='ku']/img")
elem_num = driver.find_elements_by_xpath("//div[@class='piclist3']/table/tbody/tr/td/dl/dd[1]")
elem_title = driver.find_elements_by_xpath("//div[@class='piclist3']/table/tbody/tr/td/dl/dt/a")
for url in elem_url:
pic_url = url.get_attribute("src")
html_url = elem_title[count].get_attribute("href")
print elem_title[count].text
print html_url
print pic_url
print elem_num[count].text

#创建图片文件夹
path = "E:\Picture_HP\" + elem_title[count].text + "\"
m = re.findall(r'(w*[0-9]+)w*', elem_num[count].text) #<a href="http://www.aspku.com/tech/jiaoben/%3Ca%20href=" tech="" jiaoben="" python="" 270537.html"="" style="background: none; border: none; padding: 0px; margin: 0px; text-decoration: none; font-family: Tahoma, Geneva, sans-serif; color: rgb(59, 89, 152);">python/95398.html">爬虫图片张数
nums = int(m[0])
count = count + 1
if os.path.isfile(path): #Delete file
os.remove(path)
elif os.path.isdir(path): #Delete dir
shutil.rmtree(path, True)
os.makedirs(path) #create the file directory
getScript(html_url, path, nums) #visit pages

except Exception,e:
print 'Error:',e
finally:
print 'Find ' + str(count) + ' pages with key '

#Enter Function
def main():
#Create Folder
basePathDirectory = "E:\Picture_HP"
if not os.path.exists(basePathDirectory):
os.makedirs(basePathDirectory)

#Input the Key for search str=>unicode=>utf-8
key = raw_input("Please input a key: ").decode(sys.stdin.encoding)
print 'The key is : ' + key

#Set URL List Sum:1-2 Pages
print 'Ready to start the Download!!! '
starttime = datetime.datetime.now()
num=1
while num<=1:
#url = 'http://photo.hupu.com/nba/tag/%E9%99%88%E9%9C%B2?p=2&o=1'
url = 'http://photo.hupu.com/nba/tag/%E9%A9%AC%E5%88%BA'
print '第'+str(num)+'页','url:'+url
#Determine whether the title contains key
getTitle(url)
time.sleep(2)
num = num + 1
else:
print 'Download Over!!!'

#get the runtime
endtime = datetime.datetime.now()
print 'The Running time : ',(endtime - starttime).seconds

main()

⑦ python的文件格式有两种,"*.py"和"*.pyw",它们有什么不同

它们之间的不同就只有一个:视窗运行它们的时候调用不同的执行档案。

视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。

这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行的文件,而 .pyw 则被登记为用 pythonw.exe 运行。

主要体现在win平台上开发桌面程序,linux木有哦 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw,不出现dos窗口, 住:纯图形界面程序的用户不需要看到dos窗口。


(7)python文件名参数扩展阅读

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

⑧ Python语言命令行参数解析接收参数执行脚本的三种方法

在Windows系统上,Python脚本文件当然双击就能直接运行。不过我们往往需要在执行脚本的时候还要添加相应的参数,另外在Ubuntu系统中,我们执行文件往往和其他系统或用户命令一样,需要在终端中输入,参数当然也要一并加上。所以机智客这里说的意思是,执行Python脚本(.py文件)时候需要输入相应参数,这样程序怎么写的方法。

上面这么说可能有点不明不白的,或者有朋友会用但未必知道命令行解析这种表达方式。举个例子,比如我们在执行一个脚本文件的时候,可能会在CMD或者终端中输入python demo.py 10或者python demo.py --separator 10后面这个数字就是参数。我们要编写这样的脚本或者函数,有哪些方法呢?这里列举三种常用的。

一个是用系统模块sys。引入模块语句是import sys。也就是Python语言的内置库中的sys.argv。argv通常有argv[0],argv[1],argv[2]这样几个参数。基本使用方法是m_sil_len = int(sys.argv[1])传入第一个参数,sil_th = int(sys.argv[2])传入第二个参数。如果是简单一点的参数或者脚本,我们引入了sys。可以直接用这个传入参数。

一种是用模块argparse来实现,这是标准库中推荐的命令行解析模块。引入模块语句是import argparse。基本使用方法是引入模块后,先parser = argparse.ArgumentParser()创建对象,然后调用方法添加参数parser.add_argument("jzk", help="这是关于参数的说明", type=int),之后args = parser.parse_args()使用解析就可以用了。机智客看到这个方法在很多项目脚本中使用。我们在阅读机器学习AI之类的开源项目,就会发现很多人用的都是这个方法。

还有一个就是用fire模块,用于生成命令行界面的工具。引入模块语言是import fire。它默认以-为参数分隔符的。基本使用方法是fire.Fire()。这个不仅可以做命令行的参数解析,还可以还给一个类class添加命令行。所以使用时候括号里填入函数名或者类名即可,也就是里面的参数可以是其他Python对象。

⑨ Python基础之:Python中的IO

IO就是输入和输出,任何一个程序如果和外部希望有交互的话,都需要使用到IO。相对于java而言,Python中的IO更加的简单,易用。
本文将会详细介绍Python中的IO操作。

linux中有三种标准输入输出,分别是STDIN,STDOUT,

STDERR,对应的数字是0,1,2。

STDIN是标准输入,默认从键盘读取信息;

STDOUT是标准输出,默认将输出结果输出至终端;

STDERR是标准错误,默认将输出结果输出至终端。

我们常用的 2>&1,指将标准输出、标准错误指定为同一输出路径 。

python中,我们可以使用print方法来输出信息。\

我们看下print函数的定义:

print函数将 objects 打印到 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep, end, file 和 flush 如果存在,那么必须以关键字参数的形式给出。

所有非关键字参数都会被转换为字符串,并会被写入到流,以 sep 分割,并在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end。

file 参数必须是一个具有 write(string) 方法的对象;如果参数不存在或为 None,则将使用 sys.stdout。 由于要打印的参数会被转换为文本字符串,因此 print()不能用于二进制模式的文件对象。 对于这些对象,可以使用 file.write(...)。

输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,输出流会被强制刷新。

可以看到print的输出格式还是比较简单的。我们接下来看一下怎么丰富输出的格式。

如果想要格式化字符串,可以在字符串的开始引号之前加上 f 或 F。
这样的话,我们可以直接在字符串中引入变量值,只需要把变量放在 { 和 } 中间即可。

除了在{ }中放入Python变量之外,还可以在其中放入函数:

在 ':' 后传递一个整数可以让该字段成为最小字符宽度。方便列对齐:

{ }中的变量后面还可以跟着转值符号:'!a' 表示应用 ascii() ,'!s' 表示应用 str(),还有 '!r' 表示应用 repr():

除此之外,str本身自带一个功能强大的format 函数:

调用此方法的字符串可以包含字符串字面值或者以花括号 {} 括起来的替换域,每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。 返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。

再看一个使用索引的例子:

看一个关键字的例子:

再看一个组合的例子:

还有非常复杂的组合的例子:

或者使用 '**' 符号将 table 作为关键字参数传递:

还可以使用n类型 '{:n}' 来格式化数字:

如果我们只是想要将Python对象转换为字符串,那么可以使用repr()或者str(), str() 函数是用于返回人类可读的值的表示,而 repr()是用于生成解释器可读的表示。
举个例子:

str对象还提供了一些对字符串进行手动格式化的方法:

字符串对象的 str.rjust()方法通过在左侧填充空格来对给定宽度的字段中的字符串进行右对齐。类似的方法还有 str.ljust()和 str.center()。
如果输入的字符串太长,它们不会截断字符串,而是原样返回。
如果想保证字符串的长度,则可以使用切片: x.ljust(n)[:n] 。
还可以使用str.zfill()来用0填充字符串:

% 也可以用来格式化字符串,给定 'string' % values,则 string 中的 % 实例会以零个或多个 values 元素替换。 此操作通常被称为字符串插值。

python中文件读取非常简单,使用open()方法即可。
open()会返回一个文件对象。我们看一下它的定义:

第一个参数是文件名。
第二个参数是文件打开的模式,可用的模式有:

默认模式为 'r' 。
看一个open文件的例子:

文件打开了,自然需要被关闭,所以我们需要显示调用 f.close() 方法:

有没有类似java中的try with resource的自动关闭文件的功能呢?
我们可以使用with,这样文件在使用完毕之后,会自动被关闭,非常的好用。

文件被关闭之后,如果想要再次读取,就会报错:

获取到文件对象之后,我们就可以调用文件中的方法了。

f.read(size) 会读取一些数据并将其作为字符串(在文本模式下)或字节串对象(在二进制模式下)返回。

size 是一个可选的数值参数。 当 size 被省略或者为负数时,将读取并返回整个文件的内容;当取其他值时,将读取并返回至多 size 个字符(在文本模式下)或 size 个字节(在二进制模式下)。 如果已到达文件末尾,f.read() 将返回一个空字符串 ('')。

f.readline() 从文件中读取一行;换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略。如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 '\n' 表示,该字符串只包含一个换行符。

还有一种更加简单的读取方法,就是从文件中遍历:

如果你想以列表的形式读取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f.write(string) 会把 string 的内容写入到文件中,并返回写入的字符数。

如果是在文本模式下,那么在写入文件之前,需要把对象转换成为文本形式,我们可以使用str()来进行转换。

使用f.seek(offset, whence)可以定位文件指针的位置,然后后续会从该位置开始进行读取操作。

whence 的 0 值表示从文件开头起算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。 whence 如果省略则默认值为 0,即使用文件开头作为参考点。

JSON是一个很方便进行信息交流的文件格式。我们看下怎么使用JSON来将对象转换为字符串:

mps是将对象转换为json str。 json还有一个mp方法,可以直接将对象存入到文件中。

要从文件中解析出json字符串,可以使用load:

JSON 中的键-值对中的键永远是 str类型的。当一个对象被转化为 JSON 时,字典中所有的键都会被强制转换为字符串。这所造成的结果是字典被转换为 JSON 然后转换回字典时可能和原来的不相等。换句话说,如果 x 具有非字符串的键,则有 loads(mps(x)) != x。

阅读全文

与python文件名参数相关的资料

热点内容
dbug命令 浏览:349
开逛app如何加好友 浏览:958
ftpdos命令下载文件 浏览:73
华为如何打开语音服务器 浏览:242
python中的idle 浏览:1000
五轴联动数控编程 浏览:963
换一台电脑如何远程云服务器 浏览:132
阿里云怎么买云服务器 浏览:662
java提取文字 浏览:97
阿里云服务器同人账号问题 浏览:418
5分钟解压轴题 浏览:339
安卓桌面二级文件夹 浏览:186
eps文档加密 浏览:261
手机怎么做pdf 浏览:162
ug曲面pdf 浏览:279
液化气还是压缩气 浏览:950
阿里云公共ntp服务器地址 浏览:991
金字塔学习机编程 浏览:684
多边形扫描线算法Python 浏览:718
快手app快手粉条在哪里 浏览:256