• 关于 文件路径函数 的搜索结果

回答

C语言的头文件和库文件(函数库)在C语言中,头文件提供对常量的定义和对系统函数及库函数调用的声明(函数原型)。存放的标准位置是/usr/include目录及其子目录。gcc的-I选项(增加头文件的搜索路径):gcc -I/usr/myInclude main.c 在标准位置及/usr/myInclude目录下查找main.c包含的头文件。库文件是一组预先编译好的函数的集合,可以说是头文件函数原型的实现。存放的标准位置是/lib和/usr/lib目录。库文件总是以lib开头。标准C语言库文件(函数库)为libc.a文件。gcc -o main main.c 默认情况,gcc只搜索标准C语言函数库。需要其他库如数学库(libm.a libm.so)则额外添加这一路径:gcc -o main main.c /usr/lib/libm.a,gcc -L选项(增加库文件的搜索路径): gcc -o main -L/usr/myLib main.c libmtemp.a库文件类型:静态函数库(静态库).a文件,共享函数库(共享库).so文件.

a123456678 2019-12-02 02:16:26 0 浏览量 回答数 0

回答

使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致 当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。 这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后 就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。 使用自动载入的魔术函数可以不必要写很多个include或者require函数。

珍宝珠 2019-12-02 03:16:32 0 浏览量 回答数 0

问题

函数里引文件路径相对于谁??报错

爱吃鱼的程序员 2020-06-22 11:11:31 0 浏览量 回答数 1

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

回答

同一路径直接用,父路径是../文件夹/文件,子路径就是文件价名/文件 A    -A1   --AA1    a  -B1index 在index调用a就是A/A1/AA1/a a中调用index就是../../../index 不知你是否看懂 调用函数的文件与定义函数时引入的文件的关系我的重点不是目录层级关系,而是在函数里引用文件!!! 文件在哪解析,就相对哪。。。 引用来自“Romen”的评论 文件在哪解析,就相对哪。。。 文档里说的很清楚了 http://www.php.net/manual/en/function.include.php Filesareincludedbasedonthefilepathgivenor,ifnoneisgiven,theinclude_pathspecified.Ifthefileisn'tfoundintheinclude_path,includewillfinallycheckinthecallingscript'sowndirectoryandthecurrentworkingdirectorybeforefailing.Theincludeconstructwillemitawarningifitcannotfindafile;thisisdifferentbehaviorfromrequire,whichwillemitafatalerror.Ifapathisdefined—whetherabsolute(startingwithadriveletteror\onWindows,or/onUnix/Linuxsystems)orrelativetothecurrentdirectory(startingwith.or..)—theinclude_pathwillbeignoredaltogether.Forexample,ifafilenamebeginswith../,theparserwilllookintheparentdirectorytofindtherequestedfile. php引入只有两种可能, 相对于当前访问的php文件路径,相对于当前php的文件路径,如include'data.php';就找同目录下的文件. include'./data.php'; 那就是找访问php的目录. 之前一直以为啥都不加和加上'./'是一样的,哎! 引用来自“Tuesday”的评论 php引入只有两种可能, 相对于当前访问的php文件路径,相对于当前php的文件路径,如include'data.php';就找同目录下的文件. include'./data.php'; 那就是找访问php的目录.

爱吃鱼的程序员 2020-06-22 11:11:47 0 浏览量 回答数 0

问题

关于C++新建文件夹的问题(路径带有变量)

a123456678 2019-12-01 20:10:43 1225 浏览量 回答数 1

回答

您好,可以使用以下方法:使用read_csv函数导入csv文件语法:read_csv(file,encoding)file:csv文件所在的路径,如果文件在工作路径下,这里直接写文件名就好,如果不在工作路径下,得把文件的路径也写上encoding:文件的编码类型,如果导入的是中文,则设置为utf-8

bbskkb 2019-12-02 01:09:27 0 浏览量 回答数 0

问题

使用pandas pd.Excel文件和用户输入的文件夹路径和文件名

is大龙 2020-03-20 19:56:53 1 浏览量 回答数 1

回答

函数:split() Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)os.path.split():按照路径将文件名和路径分割开 一、函数说明 1、split()函数语法:str.split(str="",num=string.count(str))[n] 参数说明:str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量 注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略 2、os.path.split()函数语法:os.path.split('PATH') 参数说明: 1.PATH指一个文件的全路径作为参数: 2.如果给出的是一个目录和文件名,则输出路径和文件名 3.如果给出的是一个目录名,则输出路径和为空文件名 二、分离字符串 string = "www.gziscas.com.cn" 1.以'.'为分隔符 print(string.split('.')) ['www', 'gziscas', 'com', 'cn'] 2.分割两次 print(string.split('.',2)) ['www', 'gziscas', 'com.cn'] 3.分割两次,并取序列为1的项 print(string.split('.',2)[1]) gziscas 4.分割两次,并把分割后的三个部分保存到三个文件 u1, u2, u3 =string.split('.',2) print(u1)—— www print(u2)—— gziscas print(u3) ——com.cn 三、分离文件名和路径 import os print(os.path.split('/dodo/soft/python/')) ('/dodo/soft/python', '') print(os.path.split('/dodo/soft/python')) ('/dodo/soft', 'python') 四、实例 str="hello boy<[www.baidu.com]>byebye" print(str.split("[")[1].split("]")[0]) www.baidu.com

世事皆空 2019-12-02 01:09:14 0 浏览量 回答数 0

回答

python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它的返回值。试一下在 python的解释器里输入os.system(”ls -l”),就可以看到”ls”列出了当前目录下的文件。可以说,通过这个函数,python就拥有了shell的所有能力。呵呵。。不过,通常这条命令不需要用到。因为shell常用的那些命令在python中通常有对应而且同样简洁的写法。 shell中最常用的是ls命令,python对应的写法是:os.listdir(dirname),这个函数返回字符串列表,里面是所有的文件名,不过不包含”.”和”..”。如果要遍历整个目录的话就会比较复杂一点。我们等下再说吧。先在解释器里试一下: os.listdir(”/”) [’tmp’, ‘misc’, ‘opt’, ‘root’, ‘.autorelabel’, ’sbin’, ’srv’, ‘.autofsck’, ‘mnt’, ‘usr’, ‘var’, ‘etc’, ’selinux’, ‘lib’, ‘net’, ‘lost found’, ’sys’, ‘media’, ‘dev’, ‘proc’, ‘boot’, ‘home’, ‘bin’] 就像这样,接下去所有命令都可以在python的解释器里直接运行观看结果。 对应于cp命令的是:shutil.copy(src,dest),这个函数有两个参数,参数src是指源文件的名字,参数dest则是目标文件或者目标目录的名字。 如果dest是一个目录名,就会在那个目录下创建一个相同名字的文件。与shutil.copy函数相类似的是 shutil.copy2(src,dest),不过copy2还会复制最后存取时间和最后更新时间。 不过,shell的cp命令还可以复制目录,python的shutil.copy却不行,第一个参数只能是一个文件。这怎么办?其实,python还有个shutil.copytree(src,dst[,symlinks]) 。参数多了一个symlinks,它是一个布尔值,如果是True的话就创建符号链接。 移动或者重命名文件和目录呢?估计被聪明的朋友猜到了,shutil.move(src,dst),呵呵。。与mv命令类似,如果src和dst在同一个文件系统上,shutil.move只是简单改一下名字,如果src和dst在不同的文件系统上,shutil.move会先把src复制到dst,然后删除src文件。看到现在,大多数朋友应该已经对 python的能力有点眉目了,接下来我就列个表,介绍一下其它的函数: os.chdir(dirname)把当前工作目录切换到dirname下 os.getcwd()返回当前的工作目录路径 os.chroot(dirname)把dirname作为进程的根目录。和*nix下的chroot命令类似 os.chmod(path,mode)更改path的权限位。mode可以是以下值(使用or)的组合: os.S_ISUIDos.S_ISGIDos.S_ENFMTos.S_ISVTXos.S_IREADos.S_IWRITEos.S_IEXECos.S_IRWXUos.S_IRUSRos.S_IWUSRos.S_IXUSRos.S_IRWXGos.S_IRGRPos.S_IWGRPos.S_IXGRPos.S_IRWXOos.S_IROTHos.S_IWOTHos.S_IXOTH 具体它们是什么含义,就不仔细说了,基本上就是R代表读,W代表写,X代表执行权限。USR 代表用户,GRP代表组,OTH代表其它。 os.chown(path,uid,gid)改变文件的属主。uid和gid为-1的时候不改变原来的属主。 os.link(src,dst)创建硬连接 os.mkdir(path,[mode])创建目录。mode的意义参见os.chmod(),默认是0777 os.makedirs(path,[mode])和os.mkdir()类似,不过会先创建不存在的父目录。 os.readlink(path)返回path这个符号链接所指向的路径 os.remove(path)删除文件,不能用于删除目录 os.rmdir(path)删除文件夹,不能用于删除文件 os.symlink(src,dst)创建符号链接 shutil.rmtree(path[,ignore_errors[,onerror]]) 删除文件夹介绍了这么多,其实只要查一下os和shutil两个模块的文档就有了,呵呵。。真正编写 shell脚本的时候还需要注意: 1.环境变量。python的环境变量保存在os.environ这个字典里,可以用普通字典的方法修改它,使用system启动其它程序的时候会自动被继承。比如: os.environ[”fish”]=”nothing”不过也要注意,环境变量的值只能是字符串。和shell有些不同的是,python没有 export环境变量这个概念。为什么没有呢?因为python没有必要有:-) 2.os.path这个模块里包含了很多关于路径名处理的函数。在shell里路径名处理好像不是很重要,但是在python里经常需要用到。最常用的两个是分离和合并目录名和文件名: os.path.split(path) -> (dirname,basename)这个函数会把一个路径分离为两部分,比如:os.path.split(”/foo /bar.dat”)会返回(”/foo”,”bar.dat”) os.path.join(dirname,basename)这个函数会把目录名和文件名组合成一个完整的路径名,比如:os.path.join(”/foo”,”bar.dat”)会返回”/foo/bar.dat”。这个函数和os.path.split()刚好相反。 还有这些函数: os.path.abspath(path)把path转成绝对路径 os.path.expanduser(path)把path中包含的”~”和”~user”转换成用户目录 os.path.expandvars(path)根据环境变量的值替换path中包含的”$name”和”${name}”,比如环境变量 FISH=nothing,那os.path.expandvars(”$FISH/abc”)会返回”nothing/abc” os.path.normpath(path)去掉path中包含的”.”和”..” os.path.splitext(path)把path分离成基本名和扩展名。比如:os.path.splitext(”/foo /bar.tar.bz2″)返回(’/foo/bar.tar’, ‘.bz2′)。要注意它和os.path.split()的区别 3.在os模块有一个很好用的函数叫os.stat()没有介绍,因为os.path模块里包含了一组和它具有同样功能的函数,但是名字更好记一点。 os.path.exists(path)判断文件或者目录是否存在 os.path.isfile(判断path所指向的是否是一个普通文件,而不是目录 os.path.isdir(path) 判断path所指向的是否是一个目录,而不是普通文件 os.path.islink(path)判断path所指向的是否是一个符号链接 os.path.ismount(path)判断path所指向的是否是一个挂接点(mount point) os.path.getatime(path)返回path所指向的文件或者目录的最后存取时间。 os.path.getmtime(path)返回path所指向的文件或者目录的最后修改时间 os.path.getctime(path)返回path所指向的文件的创建时间 os.path.getsize(path返回path所指向的文件的大小 4.应用python编写shell脚本经常要用到os,shutil,glob(正则表达式的文件名),tempfile(临时文件),pwd(操作/etc/passwd文件),grp(操作/etc/group文件),commands(取得一个命令的输出)。前面两个已经基本上介绍完了,后面几个很简单,看一下文档就可以了。 5.sys.argv是一个列表,保存了python程序的命令行参数。其中 sys.argv[0]是程序本身的名字。不能光说不练,接下来我们就编写一个用于复制文件的简单脚本。前两天叫我写脚本的同事有个几万个文件的目录,他想复制这些文件到其它的目录,又不能直接复制目录本身。他试了一下”cp src/* dest/”结果报了一个命令行太长的错误,让我帮他写一个脚本。操起python来:import sys,os.path,shutilfor f in os.listdir(sys.argv[1]):shutil.copy(os.path.join(sys.argv[1],f),sys.argv[2]) 再试一下linuxapp版里的帖子——把一个文件夹下的所有文件重命名成 10001~10999。可以这样写:import os.path,sysdirname=sys.argv[1]i=10001for f in os.listdir(dirname):src=os.path.join(dirname,f)if os.path.isdir(src):continueos.rename(src,str(i)) i =1 os.chkdir(path) 转换到目录path 下。 os.system('md a') 可以直接创建目录。 os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。● os.listdir()返回指定目录下的所有文件和目录名。● os.remove()函数用来删除一个文件。● os.system()函数用来运行shell命令。● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'rn',Linux使用'n'而Mac使用'r'。● os.path.split()函数返回一个路径的目录名和文件名。 os.path.split('/home/swaroop/byte/code/poem.txt') ('/home/swaroop/byte/code', 'poem.txt')● os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.exists()函数用来检验给出的路径是否真地存在。 文件重定向 已有PY文件new1.py ,在命令行下输入:new1>new.txt 可以将new1运行的结果输出到文件new.txt,这称为流重定向。

元芳啊 2019-12-02 01:04:36 0 浏览量 回答数 0

回答

肯定是找不到函数才会报错了,自己检查js文件路径对了没有,你执行这个函数的script是否位于导入的js文件后面。如果你的js文件时通过document.write输出而不是通过script直接加载的,那么你执行这个函数时要放到window.onload事件中,document.write输出的js文件不会中断后续js执行

小旋风柴进 2019-12-02 02:14:25 0 浏览量 回答数 0

问题

c语言 如何获取目录或文件的软连接

云栖技术 2019-12-01 19:44:27 1215 浏览量 回答数 2

回答

extension=phpintl.dll 表示php加载加载这个这个扩展。在php.ini文件里设置。当前哪个php.ini文件起效,可以用phpinfo()函数,在php文件打印出来看下。 在php.ini里还有个配置:extensiondir='你的扩展路径名' 这里面定义了extension用到的dll文件路径。路径定义的是apache/bin目录,就要把dll拷贝到这个里面

落地花开啦 2019-12-02 02:46:39 0 浏览量 回答数 0

回答

确认脚本使用到的 csv 文件都已经上传到 PTS。 路径设置使用相对路径。请务必将 CSV 文件的 value 修改为文件名而不是文件路径。 如果数据文件中有包含中文的情况,编码设置需要调整为 UTF-8。 最后,即使修复了问题,还是建议使用 CSV Data Set Config,可以直接设置编码格式,同时相较于 __CSVRead 函数有更好的维护性。

保持可爱mmm 2020-03-28 19:22:17 0 浏览量 回答数 0

回答

Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建。 主要涉及到三个函数 1、os.path.exists(path) 判断一个目录是否存在 2、os.makedirs(path) 多层创建目录 3、os.mkdir(path) 创建目录 DEMO 直接上代码 123456789101112131415161718192021222324252627282930def mkdir(path): # 引入模块 import os # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判断结果 if not isExists: # 如果不存在则创建目录  # 创建目录操作函数 os.makedirs(path) print path+' 创建成功' return True else: # 如果目录存在则不创建,并提示目录已存在 print path+' 目录已存在' return False 定义要创建的目录 mkpath="d:\qttc\web\" 调用函数 mkdir(mkpath) 以上是我写好的一个函数,只需要传入你要创建目录的全路径即可。 说明 在以上DEMO的函数里,我并没有使用os.mkdir(path)函数,而是使用了多层创建目录函数os.makedirs(path)。这两个函数之间最大的区别是当父目录不存在的时候os.mkdir(path)不会创建,os.makedirs(path)则会创建父目录。 比如:例子中我要创建的目录web位于D盘的qttc目录下,然而我D盘下没有qttc父目录,如果使用os.mkdir(path)函数就会提示我目标路径不存在,但使用os.makedirs(path)会自动帮我创建父目录qttc,请在qttc目录下创建子目录web。

xuning715 2019-12-02 01:10:37 0 浏览量 回答数 0

回答

在同一个文件夹下 调用函数: A.py文件: [python] view plain copydef add(x,y): print('和为:%d'%(x+y)) B.py文件:[python] view plain copyimport A A.add(1,2) 或[python] view plain copyfrom A import add add(1,2) 调用类: A.py文件: [python] view plain copyclass A: def __init__(self,xx,yy): self.x=xx self.y=yy def add(self): print("x和y的和为:%d"%(self.x+self.y)) B.py文件:[python] view plain copyfrom A import A a=A(2,3) a.add() 或[python] view plain copyimport A a=A.A(2,3) a.add() 在不同文件夹下 A.py文件的文件路径:E:PythonProjectwinycg B.py文件:[python] view plain copyimport sys sys.path.append(r'E:PythonProjectwinycg') '''''python import模块时, 是在sys.path里按顺序查找的。 sys.path是一个列表,里面以字符串的形式存储了许多路径。 使用A.py文件中的函数需要先将他的文件路径放到sys.path中''' import A a=A.A(2,3) a.add()

xuning715 2019-12-02 01:10:15 0 浏览量 回答数 0

回答

python 所有版本的源代码可以在这里下载到:https://www.python.org/downloads/source/python没有像matlab那样的函数可以直接查看某个函数的源代码,只有去下载整个源代码查看了,不过找起来应该也不难,另外你也可以写一个小程序来查看对应函数的源代码。Python的函数调用方式是通过import来调用的对应的py文件。库函数有内建函数build_in(会写python的时候已经可以不用看了,不会写的时候看也看不懂),和通过pip直接下载或者github上下载再安装的函数。本质上都是py文件。后者有时候由于环境的不同需要自行修改(这种情况较少),一般在安装路径下"Libsite-packages"文件夹中存在。学习库函数最好的方法是看网上官方的帮助文档,此外还可以通过python自带的dir()方法查看所有的属性和方法,或者用help()方法查看帮助文档(部分别人造的轮子不一定有)。另外推荐使用ipython,Python创始人之一的成员编写的交互式系统

xuning715 2019-12-02 01:10:13 0 浏览量 回答数 0

回答

Mahout中K-Means算法实现原理在Mahout中,K-Means算法由两大部分组成:其一,外部的循环,即算法的准则函数不满足时要继续的循环;其二,循环的主体部分,即算法的主要计算过程。Mahout中实现的K-Means算法和上面对应,分别使用KmeansDriver来设置循环,使用KmeansMapper、KmeansReducer(KmeansCombiner设置后算法运行速度会提高)作为算法的主体部分。该算法的输入主要包含两个路径(或者说文件),其中一个是数据的路径,还有一个是初始聚类中心向量的路径,即包含k个聚类中心的文件。这里要求数据都是序列化的文件,同时要求输入数据的key设置为Text(这个应该是没有做硬性要求的),value设置为VectorWritable(这个是硬性要求的,和Canopy Clustering一样)。其实在该算法中可以通过设置参数来自动提取原始数据中的k个值作为初始中心点的路径,当然,如果读者要自己提供初始中心点的文件,也可以通过Canopy算法来得到聚类的中心点作为K-Means算法的初始中心点文件。该算法在KmeansDriver中通过不断循环使用输入数据和输入中心点来计算输出(这里的输出都定义在一个clusters-N的路径中, N是可变的)。输出同样是序列文件,key是Text类型,value是Cluster类型。该算法的原理图如图3-11所示。KmeansDriver通过判断算法计算的误差是否达到阈值或者算法循环的次数是否达到给定的最大次数来控制循环。在循环过程中,新的聚类中心文件路径,一般命名为“clusters-N”且被重新计算得到,这个计算结果是根据前一次的中心点和输入数据计算得到的。最后一步,是通过一个KmeansMapper根据最后一次的中心点文件来对输入文件进行分类,计算得到的结果放入到文件名为“clusteredPoints”文件夹中,这次任务没有combiner和Reducer操作。KmeansMapper在setup函数中读取输入数据,然后根据用户定义的距离计算方法把这些输入放入到最近的聚类中心簇中,输出的key是类的标签,输出的value是类的表示值;KmeansCombiner通过得到Mapper的输出,然后把这些输出进行整合,得到总的输出;KmeansReducer通过设定一个Reducer来进行计算,接收所有的combiner的输出,把相同的key的类的表示值进行整合并输出。

云栖技术 2019-12-02 02:36:52 0 浏览量 回答数 0

回答

该工具可以实现以下两个功能 将 ES6 转换为 ES5支持在 JS 文件中 import CSS 文件 实现 因为涉及到 ES6 转 ES5,所以我们首先需要安装一些 Babel 相关的工具 yarn add babylon babel-traverse babel-core babel-preset-env 接下来我们将这些工具引入文件中 const fs = require('fs') const path = require('path') const babylon = require('babylon') const traverse = require('babel-traverse').default const { transformFromAst } = require('babel-core') 首先,我们先来实现如何使用 Babel 转换代码 function readCode(filePath) { // 读取文件内容 const content = fs.readFileSync(filePath, 'utf-8') // 生成 AST const ast = babylon.parse(content, { sourceType: 'module' }) // 寻找当前文件的依赖关系 const dependencies = [] traverse(ast, { ImportDeclaration: ({ node }) => { dependencies.push(node.source.value) } }) // 通过 AST 将代码转为 ES5 const { code } = transformFromAst(ast, null, { presets: ['env'] }) return { filePath, dependencies, code } } 首先我们传入一个文件路径参数,然后通过 fs 将文件中的内容读取出来接下来我们通过 babylon 解析代码获取 AST,目的是为了分析代码中是否还引入了别的文件通过 dependencies 来存储文件中的依赖,然后再将 AST 转换为 ES5 代码最后函数返回了一个对象,对象中包含了当前文件路径、当前文件依赖和当前文件转换后的代码 接下来我们需要实现一个函数,这个函数的功能有以下几点 调用 readCode 函数,传入入口文件分析入口文件的依赖识别 JS 和 CSS 文件 function getDependencies(entry) { // 读取入口文件 const entryObject = readCode(entry) const dependencies = [entryObject] // 遍历所有文件依赖关系 for (const asset of dependencies) { // 获得文件目录 const dirname = path.dirname(asset.filePath) // 遍历当前文件依赖关系 asset.dependencies.forEach(relativePath => { // 获得绝对路径 const absolutePath = path.join(dirname, relativePath) // CSS 文件逻辑就是将代码插入到 `style` 标签中 if (/\.css$/.test(absolutePath)) { const content = fs.readFileSync(absolutePath, 'utf-8') const code = ` const style = document.createElement('style') style.innerText = ${JSON.stringify(content).replace(/\\r\\n/g, '')} document.head.appendChild(style) ` dependencies.push({ filePath: absolutePath, relativePath, dependencies: [], code }) } else { // JS 代码需要继续查找是否有依赖关系 const child = readCode(absolutePath) child.relativePath = relativePath dependencies.push(child) } }) } return dependencies } 首先我们读取入口文件,然后创建一个数组,该数组的目的是存储代码中涉及到的所有文件接下来我们遍历这个数组,一开始这个数组中只有入口文件,在遍历的过程中,如果入口文件有依赖其他的文件,那么就会被 push 到这个数组中在遍历的过程中,我们先获得该文件对应的目录,然后遍历当前文件的依赖关系在遍历当前文件依赖关系的过程中,首先生成依赖文件的绝对路径,然后判断当前文件是 CSS 文件还是 JS 文件 如果是 CSS 文件的话,我们就不能用 Babel 去编译了,只需要读取 CSS 文件中的代码,然后创建一个 style 标签,将代码插入进标签并且放入 head 中即可如果是 JS 文件的话,我们还需要分析 JS 文件是否还有别的依赖关系最后将读取文件后的对象 push 进数组中 现在我们已经获取到了所有的依赖文件,接下来就是实现打包的功能了 function bundle(dependencies, entry) { let modules = '' // 构建函数参数,生成的结构为 // { './entry.js': function(module, exports, require) { 代码 } } dependencies.forEach(dep => { const filePath = dep.relativePath || entry modules += `'${filePath}': ( function (module, exports, require) { ${dep.code} } ),` }) // 构建 require 函数,目的是为了获取模块暴露出来的内容 const result = ` (function(modules) { function require(id) { const module = { exports : {} } modules[id](module, module.exports, require) return module.exports } require('${entry}') })({${modules}}) ` // 当生成的内容写入到文件中 fs.writeFileSync('./bundle.js', result) } 这段代码需要结合着 Babel 转换后的代码来看,这样大家就能理解为什么需要这样写了 // entry.js var _a = require('./a.js') var _a2 = _interopRequireDefault(_a) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } console.log(_a2.default) // a.js Object.defineProperty(exports, '__esModule', { value: true }) var a = 1 exports.default = a Babel 将我们 ES6 的模块化代码转换为了 CommonJS(如果你不熟悉 CommonJS 的话,可以阅读这一章节中关于 模块化的知识点) 的代码,但是浏览器是不支持 CommonJS 的,所以如果这段代码需要在浏览器环境下运行的话,我们需要自己实现 CommonJS 相关的代码,这就是 bundle 函数做的大部分事情。 接下来我们再来逐行解析 bundle 函数 首先遍历所有依赖文件,构建出一个函数参数对象对象的属性就是当前文件的相对路径,属性值是一个函数,函数体是当前文件下的代码,函数接受三个参数 module、exports、 require module 参数对应 CommonJS 中的 moduleexports 参数对应 CommonJS 中的 module.exportrequire 参数对应我们自己创建的 require 函数 接下来就是构造一个使用参数的函数了,函数做的事情很简单,就是内部创建一个 require 函数,然后调用 require(entry),也就是 require('./entry.js'),这样就会从函数参数中找到 ./entry.js 对应的函数并执行,最后将导出的内容通过 module.export 的方式让外部获取到最后再将打包出来的内容写入到单独的文件中 如果你对于上面的实现还有疑惑的话,可以阅读下打包后的部分简化代码 ;(function(modules) { function require(id) { // 构造一个 CommonJS 导出代码 const module = { exports: {} } // 去参数中获取文件对应的函数并执行 modules[id](module, module.exports, require) return module.exports } require('./entry.js') })({ './entry.js': function(module, exports, require) { // 这里继续通过构造的 require 去找到 a.js 文件对应的函数 var _a = require('./a.js') console.log(_a2.default) }, './a.js': function(module, exports, require) { var a = 1 // 将 require 函数中的变量 module 变成了这样的结构 // module.exports = 1 // 这样就能在外部取到导出的内容了 exports.default = a } // 省略 }) 小结 虽然实现这个工具只写了不到 100 行的代码,但是打包工具的核心原理就是这些了 找出入口文件所有的依赖关系然后通过构建 CommonJS 代码来获取 exports 导出的内容

前端问答 2019-12-23 22:02:13 0 浏览量 回答数 0

回答

ZIP文件解压 OSS 控制台新增了对 ZIP 文件自动解压的功能,这个功能需要结合函数计算共同完成,目前只对 ZIP 后缀的文件进行处理,下面介绍配置过程和相关注意事项: 架构图 OSS 控制台配置 如何修改触发器 如何修改目标目录 如何删除触发器 扩展函数功能 大文件支持 架构图 ZIP文件 ZIP文件 OSS OSS 函数计算 函数计算 ZIP文件上传 自动触发函数(缺省支持PUT和POST请求) 解压文件 OSS控制台配置 打开 OSS 的控制台,选择某个 Bucket,在 Bucket 主页选择函数计算,如下图:001 注意:如果没开通函数计算,会提示开通函数后,才能进行下面的操作。 点击 ZIP 包解压按钮,进入 OSS 触发器编辑页面,如下图:002页面属性讲解: 服务授权:授予函数计算读写 OSS 该 Bucket 下的执行函数的权限,需要点击确认进入 RAM 进行授权后使用,每个触发器都需要重新设置一次。 触发器角色:授予 OSS 访问函数计算权限,仅需要设置一次即可。 前缀:当具备某前缀的文件可以触发函数执行,建议用户设置一定要设置,如果不设置,缺省对该 Bucket 下全部的 ZIP 文件都匹配到,有可能会触发循环执行。详细描述 目标目录:解压后的 ZIP 文件存放的目录,如果不设置,缺省会解压到当前 Bucket 下。 费用知晓: ZIP 包解压的功能是增值服务,在解压过程中,函数计算会根据解压执行时间计算费用。 如何修改触发器 当用户设置好触发器后,想进行修改,点击列表的编辑按钮,页面会跳转到函数计算触发器的修改页面进行编辑,如下图所示: 003 用户可以修改事件触发、前缀和后缀名,强烈建议不要修改后缀,因为系统根据后缀已经默认创建了系统函数,来保证业务逻辑的正常运转。 如何修改目标目录 如果用户想修改目标解压的目录,需要在函数计算的环境变量中修改,路径是,点击函数概览,点击函数属性的修改,修改环境变量的值即可,详见下图:004 如何删除触发器 如果用户想删除该功能,从 OSS 控制台点击函数触发器列表的编辑按钮,在函数计算的触发器页面,点击删除即可,删除触发器后,建议同时删除该函数,删除后的 ZIP 解压功能将无法提供运行。 扩展函数功能 通过 OSS 控制台生成的 ZIP 解压功能,是在用户的函数计算里自动生成了一个系统函数,用户可以根据自己的需求来修改函数代码,例如,用户的 ZIP 文件较小,处理的时间较小,可以选择更小规格的内存执行来节省费用,同样,如果用户的 ZIP 文件较大,例如 1GB 以上,建议把超时时间设置更长,以免出现超时现象。 另外,如果解压的文件不仅仅是 ZIP 格式,用户可以根据业务需要,扩展函数代码,目前函数计算提供的缺省函数是 Python2.7语言. 大文件支持 如果压缩文件包含太多文件,解压函数可能会超时,造成解压不完全。函数计算结合 Serverless 工作流服务提供了一个海量文件解压方案,可以在应用中心使用应用(目前该应用仅在上海,北京,杭州,深圳可用)。

1934890530796658 2020-03-27 17:25:36 0 浏览量 回答数 0

回答

函数filedialog.askopenfile将返回一个IO对象。您可以在需要修改此文件时使用它。 如果只需要获取完整路径,请使用filedialog.askopenfilename,它将返回您选择的文件路径。 回答来源:stackoverflow

is大龙 2020-03-24 21:48:33 0 浏览量 回答数 0

问题

请问如何才能将本地时间保存成txt文件的文件名

a123456678 2019-12-01 20:28:15 1054 浏览量 回答数 1

回答

gcc -o main1 main1.o -L库文件的路径 -lf######好了,是我库文件函数包含错了,谢谢######一楼 正解 ,-L 是添加一个依赖库扫描的路径 以及 扫描顺序。 ######你链接成功是因为 libf.a 本身是.o 的归档文件

kun坤 2020-06-04 13:27:22 0 浏览量 回答数 0

问题

为什么我加载动态链接库失败了,路径绝对没有错错

a123456678 2019-12-01 20:28:44 1036 浏览量 回答数 1

问题

php中的dirname等函数无法处理中文路径的问题,求助。

落地花开啦 2019-12-01 20:03:25 1036 浏览量 回答数 1

问题

uploadify 怎么取得多个文件名?

a123456678 2019-12-01 20:21:30 800 浏览量 回答数 1

回答

app.get('photos') 是获取以前用app.set('photos',值)设置的值。所以说代码的前半部分应该有设置这个值的代码,这个值的意思就是保存上传文件的路径。var dir = app.get("photos");photos.submit(dir)后面这个返回一个处理函数跟直接写function (req,res,next){}的区别就是,多了一个闭包保存app.get获取的路径。上传文件,express3.0里面是,框架先给你保存到一个临时的位置,然后自己用代码移动到你自己想要保存的位置。req.files 里面存储了上传文件的信息(大小,名字,临时保存位置等)。fs.rename:其实你没有发现,rename和file.move其实是同一个意思,都是移动文件的意思。所以结论就是:dir 定义你想保存上传图片的路径。rename 移动文件到你想保存的位置(顺便如果用户可以取自定义的名字)

蛮大人123 2019-12-02 02:48:30 0 浏览量 回答数 0

回答

该手册指出以下内容: LOAD_FILE(文件名) 读取文件并以字符串形式返回文件内容。要使用此功能,文件必须位于服务器主机上,必须指定文件的完整路径名,并且必须具有FILE特权。该文件必须全部可读,并且其大小小于max_allowed_pa​​cket字节。如果将secure_file_priv系统变量设置为非空目录名称,则要加载的文件必须位于该目录中。 如果文件不存在或由于不满足上述条件之一而无法读取,则该函数返回NULL。 从MySQL 5.0.19开始,character_set_filesystem系统变量控制以文字字符串形式给出的文件名的解释。 mysql> UPDATE t SET blob_col=LOAD_FILE('/tmp/picture') WHERE id=1; 由此看来,在您的情况下,有不止一件事情可能是错误的... 您正在通过完整的路径吗? 权限设置正确吗? 函数返回什么?空值? 您是否尝试过手册中提供的查询? 来源:stack overflow

保持可爱mmm 2020-05-13 14:03:09 0 浏览量 回答数 0

回答

app.get('photos') 是获取以前用app.set('photos',值)设置的值。所以说代码的前半部分应该有设置这个值的代码,这个值的意思就是保存上传文件的路径。var dir = app.get("photos");photos.submit(dir)后面这个返回一个处理函数跟直接写function (req,res,next){}的区别就是,多了一个闭包保存app.get获取的路径。上传文件,express3.0里面是,框架先给你保存到一个临时的位置,然后自己用代码移动到你自己想要保存的位置。req.files 里面存储了上传文件的信息(大小,名字,临时保存位置等)。fs.rename:其实你没有发现,rename和file.move其实是同一个意思,都是移动文件的意思。所以结论就是:dir 定义你想保存上传图片的路径。rename 移动文件到你想保存的位置(顺便如果用户可以取自定义的名字)最好贴个前端form的代码。

杨冬芳 2019-12-02 02:55:48 0 浏览量 回答数 0

问题

gcc编译时指定库文件路径时-L无效的问题

a123456678 2019-12-01 19:59:59 1130 浏览量 回答数 1

回答

编译后理论上就不会再存在没有导出的函数名称了(因为没有必要这纯粹是无意义地增大程序体积),但是VS默认会生成pdb文件,并把pdb的路径写入exe文件,所以你发布的时候不发布pdb就行了,其实这个pdb就算发布了也不会给破解者多大帮助,pdb里面就是函数名称啊,各种原型啊,方便程序崩溃时调试用的,你可以在项目属性里面配置不生成pdb

51干警网 2019-12-02 01:34:22 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播