php 文件系统函数及目录函数
1、basename ,dirname ,pathinfo和realpath
basename(path) 返回路径中的文件名部份,包含扩展名,path表示路径;
dirname(path) 返回路径中的目录部份,path表示路径;
pathinfo(path,params) 返回文件路径信息,path表示路径,params表示配置信息 (params的配置有PATHINFO_DIRNAME-目录部份,PATHINFO_BASENAME-文件名部份含扩展名,PATHINFO_EXTENSION-扩展名部份和PATHINFO_FILENAME-文件名称不含扩展名);
realpath(path) 返回规范化的绝对路径,path表示路径
<?php
header('Content-type:text/html;charset=utf-8');
$path = 'C:\wnmp\nginx\www\test.info.php';
echo basename($path);
//输出 test.info.php;
echo dirname($path);
//输出 C:\wnmp\nginx\www
echo '<pre>';
print_r(pathinfo($path));
echo '</pre>';
//输出
//Array
//(
// [dirname] => C:\wnmp\nginx\www
// [basename] => test . info . php
// [extension] => php
// [filename] => test . info
//)
var_dump(realpath('../../../../www/index.php'));
//输出 string(16) "C:\www\index.php" 这个返回的是实际文件所在的地址
?>
2、filesize,filetype,fileatime,filectime,filemtime,touch
filesize(path) 返回的是文件的大小,如果出错,那么返回FALSE,path表示文件的路径
filetype(path) 返回的是文件的类型可能的值有 fifo,char,dir,block,link,file 和 unknown,如果出错,那么返回的值为FALSE。path表示文件的路径
filectime(path)返回的是文件的创建时间
filemtime(path)返回的是文件的更改时间
fileatime(path)返回的是文件的访问时间(注意Php的访问是不会更改fileatime的时间)
touch(path, int(time))触碰指定文件,改变文件的fileatime,也可以指定改变以的时间
<?php
header('Content-type:text/html;charset=utf-8');
$path = 'C:\wnmp\nginx\www\test.php';
var_dump(filetype($path));
//输出 string(4) "file"
var_dump(filesize($path));
//输出 int(281)
?>
<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
ini_set('timezone', 'PRC');
$path =realpath(__DIR__)."/test.txt";
if(is_file($path)) {
touch($path);
echo date('Y-m-d H:i:s', fileatime($path)).'<br>';
echo date('Y-m-d H:i:s', filemtime($path)).'<br>';
echo date('Y-m-d H:i:s', filectime($path));
}
//输出如下的时间
//2019-05-14 13:03:20
//2019-05-14 13:03:20
//2019-03-29 23:30:30
?>
3、copy,rename
copy(source,dest) 表示拷贝文件,source表示源文件,dest表示目标地,注意dest要详细到文件的名称,相当于在复制的时候要把复制后的名称给定好,如果文件路径不存在,那么返回FALSE还则返回TRUE
rename(oldname,newname) 表示重命名文件,但同时也可以移动文件,oldname表示原来旧的文件名称,newname表示新的文件名称,如果成功返回TRUE,如果文件路径不存在或者失败则返回FALSE,
<?php
header('Content-type:text/html;charset=utf8');
$path = 'D:\filetestA\copy.txt';
if (file_exists($path)) {
var_dump(copy($path, 'D:\filetestB\copyB.txt'));
//输出 bool(true) 同时在目标的路径下出现copyB.txt
var_dump(rename($path, 'D:\filetestB\copyA.txt'));
//输出 bool(true) 同时会把原目录下的文件移动到目标文件夹下
}
?>
4、file_exists,is_dir,is_file,is_link
file_exists(path) 表示检查文件路径是否存在,path表示路径(可以检查文件或目录)
is_dir(filename) 表示判断给定的文件名是否是一个路径,filename表示是一个文件名
is_file(filename) 表示判断给定的文件名是否是一个文件,filename表示是一个文件名
is_link(filename) 表示判断给定的文件名是否是一个符号连接,filename表示一个文件名
<?php
header('Content-type:text/html;charset=utf-8');
$path = 'D:/filetest/test.txt';
$filename='D:/filetest';
var_dump(file_exists($path));
//输出 bool(true)
var_dump(is_dir($filename));
//输出 bool(true)
var_dump(is_dir($path));
//输出 bool(false)
var_dump(is_link($path));
//输出 bool(false)
var_dump(is_file($path));
//输出 bool(true)
?>
5、disk_free_space 和 disk_total_space
disk_free_space(dir) 表示返回一个磁盘的剩余的空间容量 dir表示磁盘
disk_total_space(dir) 表示返回一个磁盘的总的空间容量 dir表示磁盘
<?php
header('Content-type:text/html;charset=utf-8');
$path = 'D:/filetest/test.txt';
$filename='D:/filetest';
var_dump(disk_free_space('d:')/1024/1024/1024);
//输出 float(30.699325561523)
var_dump(disk_total_space('d:')/1024/1024/1024);
//输出 float(117.7949180603)
?>
6、mkdir,rmdir
mkdir(path,mode,recursive) 表示新建文件夹,path表示文件的路径及名称,mode表示模式默认情况下是0777表示最大的访问量,recursive表示是否创建多级子目录
rmdir(path) 表示删除文件夹,path表示文件的路径及名称,如果文件夹内有文件,那么删除失败
<?php
header('Content-type:text/html;charset=utf-8');
$dir = 'D:/filetest';
if (!is_dir($dir . '/yftest')) {
mkdir($dir . '/yftest', 0777);
//在指定目录下新建一个新的文件夹yftest;
}
if (is_dir($dir . '/yftest')) {
rmdir($dir . '/yftest');
//删除了指定文件夹yftest
}
?>
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
ini_set('date.timezone', 'PRC'); class CreateFile
{
private $path;
private $content;
private $num; private function isDirExists(){
return file_exists($this->path);
} private function createFile() {
$name = date('Ymd', time());
$str = str_repeat($this->content."\r\n", $this->num);
return file_put_contents($this->path."/{$name}.txt", $str, FILE_APPEND);
} public function init() {
!$this->isDirExists()?mkdir($this->path, 0777, true): null;
return $this->createFile();
} public function __construct(string $addr, string $content, int $num){
$this->path = $addr;
$this->content = $content;
$this->num = $num;
}
} $file = new CreateFile('d:/aaa/bbb/ccc/ddd','are you ok???',20);
var_dump($file->init());
?>
7、chdir,chroot
chdir(dirname) 表示把当前的目录改成指定的名字,dirname表示新的文件夹名字,成功返回true失败返回false
chroot(dirname) 表示把根目录改成指定的名字,dirname表示新的文件夹名字,成功返回true失败返回false
8、opendir,closedir,readdir,rewinddir,scandir
opendir(dirname) 表示打开路径名称,dirname表示路径名称,如果路径名称不存在,那么返回false
closedir(handle) 表示关闭指定的文件句柄,(即已经打开的文件系统)handle表示打开的文件句柄
readdir(handle) 表示读取指定的文件句柄,(即已经打开的文件系统)handle表示打开的文件句柄,如果读取失败则返回false;
rewinddir(handle) 表示指定的目录流重置到目录的开头,(即已经打开的文件系统)handle表示打开的文件句柄
scandir(dirname) 表示读取指定路径的文件夹内容,并且以数组的形式返回,如果读取失败,则返回false;
<?php
header('Content-type:text/html;charset=utf8');
$dir = 'D:/filetest';
if (is_dir($dir)) {
$handle = opendir($dir);
while (false !== $file = readdir($handle)) {
echo $file . '<br>';
};
closedir($handle);
}
//输出如下信息
// .
// ..
// haha
// test.txt
?>
<?php
header('Content-type:text/html;charset=utf8');
$dir = 'D:/filetest';
var_dump(scandir($dir));
//输出 array(4) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(4) "haha" [3]=> string(8) "test.txt" }
?>
删除文件夹下的所有内容,以及获取所有文件的大小,复制文件夹
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true); class removeFile
{
private $path;
private $compareArr = ['.', '..']; /**删除文件或者文件夹
* @param $p
* @return bool
*/
private function removeAll($p) {
if(is_file($p)) {
return unlink($p);
} else if (is_dir($p)) {
$tmp = array_diff(scandir($p), $this->compareArr);
$dirname = realpath($p);
array_walk($tmp, function ($val) use ($dirname) {
$this->removeAll($dirname.'/'.$val);
});
return rmdir($p);
}
return false;
} /**获取所有文件的大小
* @param $p
* @return bool|false|int
*/
private function getAllSize($p) {
if(is_file($p)) {
return filesize($p);
} else if(is_dir($p)) {
$num = 0;
$tmp = array_diff(scandir($p), $this->compareArr);
$dirname = realpath($p);
array_walk($tmp, function ($val) use ($dirname, &$num) {
$num += $this->getAllSize($dirname.'/'.$val);
});
return $num;
}
return false;
} /**复制文件
* @param $source
* @param $target
* @return bool
*/
private function copyAllFile($source, $target) {
if(is_file($source)) {
return copy($source, $target.'/'.basename($source));
} else if (is_dir($source)) {
$tmp = array_diff(scandir($source), $this->compareArr);
$basename = basename($source);
$dirname = realpath($source);
!file_exists($target.'/'.$basename) ? mkdir($target.'/'.$basename, 0777, true): null;
$targetBase = $target.'/'.$basename;
array_walk($tmp, function($val)use($basename, $dirname, $targetBase) {
$this->copyAllFile($dirname.'/'.$val, $targetBase);
});
return true;
}
return false;
} public function remove(){
if(file_exists($this->path)){
return $this->removeAll($this->path);
}
return false;
} public function getSize() {
if(file_exists($this->path)){
return $this->getAllSize($this->path);
}
return false;
} public function copy($targetPath) {
if(file_exists($this->path) && (is_dir($targetPath) || mkdir($targetPath, 0777, true))) {
return $this->copyAllFile($this->path, $targetPath);
}
return false;
} public function __construct($path){
$this->path = $path;
}
}
$t = new removeFile('d:/yii-docs-2.0-en');
var_dump($t->remove());
?>
9、dir,getcwd
dir(dirname) 表示返回指定路径的相关信息,返回结果是一个对象,如果失败则返回false
getcwd() 表示返回当前工作的路径
<?php
header('Content-type:text/html;charset=utf8');
$dir = 'D:/filetest';
var_dump(dir($dir));
//输出 object(Directory)#1 (2) { ["path"]=> string(11) "D:/filetest" ["handle"]=> resource(3) of type (stream) }
var_dump(getcwd());
//输出 string(17) "C:\wnmp\nginx\www"
?>
10、file,fopen,fstat,ftell,fseek,fread,fwrite,fpassthru,fclose,rewind
file($filename) 把整个文件读入一个数组中 即把整个文件件的内容写入一个数组中
fopen($filename, $type) 打开文件或者 URL 返回一个handle句柄,$type常用的模式都有如下:
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 |
为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
fstat($handle) 返回的是文件的信息,里有size,atime,ctime,mtime等信息
fseek($handle, offset) 对文件进行定位,即把文件指针移动到offset的位置,但如果fopen模式为a|a+则会失效
ftell($handle) 返回的是文件指针指向的位置
fread($handle, $length) 从文件指针 handle
读取最多 length
个字节,length常用的是filesize($path);
fclose($handle) 关闭文件句柄
fwrite($handle, $str) 在文件中的指针处写入指定的字符串
rewind($handle) 重置指针指向文件头
feof($handle) 表示判断是否到了文件的末尾
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
$path = realpath(__DIR__) . "/test.txt";
//var_dump(file($path));
//输出
//array(9) {
// [0]=>string(18) "are you ok???"
// [1]=>string(22) "today is good day!!!"
// [2]=>string(19) "nice to meet you!"
// [3]=>string(14) "how are you?"
// [4]=>string(26) "昨天,今天,明天"
// [5]=>string(20) "很高兴见到你"
// [6]=>string(13) "function(){"
// [7]=>string(31) " console.log('are you ok???)"
// [8]=>string(1) "}"
//}
$handle = fopen($path, 'a+b');
fseek($handle, 5);
var_dump(ftell($handle));
//输出 int(5)
rewind($handle);
//输出 int(0);
var_dump(ftell($handle));
var_dump(fpassthru($handle));
//输出当前位置之后的所有内容
$info = fstat($handle);
var_dump($info);
//输出当前的文件信息
$content = fread($handle, filesize($path));
var_dump(nl2br($content));
//输出指定长度的文件内容
echo '<hr>';
echo ftell($handle);
fwrite($handle, 'aaaaaaaaaaa');
//在文件的末尾处添加入指定的字符串
?>
注意: 以上的fread($handle, length)虽然可以读取内容,但是,当文件过大的时候,会导致程序的负荷过重,因为,如果遇到大文件的时候可以设置缓冲区,实现部份文件的循环读取,具体如下:
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
$path = realpath(__DIR__) . "/test.txt";
if(file_exists($path)) {
$handle = fopen($path, 'rb');
rewind($handle);
$read_size = 10;
$all_content = '';
while(!feof($handle)) {
$all_content .= htmlspecialchars(fread($handle, $read_size));
}
fclose($handle); //关闭文件
echo $all_content;
} else {
echo '文件不存在';
}
?>
写入内容的案例
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
$path = realpath(__DIR__);
$handle = fopen($path.'/test.txt','a+b');
$str = str_repeat("are you ok??? \r\n", 10);
fwrite($handle, $str);
fclose($handle);
?>
11、file_get_contents,file_put_contents,mime_content_type,parse_ini_file,fgets,unlink
file_get_contents($filename) 表示读取的文件里的内容,在PHP的底层,是用fopen,fread,fclose来封装的,如果文件的流不是很大,推荐使用这个方法,否则推荐使用上面的做法
file_put_contents($filename, $data,$type)表示写入文件里的内容,在PHP的底层,是用fopen,fwrite,fclose来封装的,$type表示是类型,常规是覆盖写,如果改成FILE_APPEND,那么就是追加写,如果没有目标文件,则会进行创建
mime_content_type($filename) 获取文件的类型
parse_ini_file($filename) 表示读入一个配置文件,并且以一个数组的方式输出,如果是一个非ini文件,那么返回false
fgets($handle, $length) 从文件中获取一行的数据,主要是以文件中的\n进行分割, $length表示长度,最大是一行数据中的length-1个数据,该函数会自动过滤掉html,javascript以及php的标签
unlink($filename) 删除文件
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
$path = realpath(__DIR__ . '/test.txt');
$content = file_get_contents($path);
var_dump($content);
echo '<hr>';
//可以输出文件里的所有内容
$data = "are you ok??? today is good day , nice to meet you!!!";
$res = file_put_contents($path, $data);
var_dump($res);
//输出 int(53)
var_dump(file_get_contents($path));
//输出 string(53) "are you ok??? today is good day , nice to meet you!!!" //进行parse_ini_file函数测试
if(file_exists($path)) {
var_dump(parse_ini_file($path));
//输出
//array(3) { ["name"]=> string(4) "aaaa" ["age"]=> string(2) "30" ["like"]=> string(13) "are you ok???" }
} else {
echo '文件不存在';
}
?>
<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
$path = realpath(__DIR__ . '/test.html');
$handle = fopen($path, 'rb');
$content = '';
while(!feof($handle)) {
$content .= fgets($handle);
}
fclose($handle);
echo $content;
//输出所有非html, javascript, php的内容
unlink($path);
//删除文件
?>
12、iconv
因为文件操作函数是早期开发的功能,因些对gbk,gb2312支持的比较好,但是对utf8支持的不好,因此在使用中文给文件名命名的时候,需要用以上的函数进行转义;
iconv($in_charset, $out_charset, $str)
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
$path = realpath(__DIR__);
$fromFile = $path.'/test.txt';
$toFile = $path.'/你好.txt';
$toFile = iconv('utf-8', 'gbk', $toFile);
var_dump(rename($fromFile, $toFile));
?>
注意:在文件名的字符比对的时候也要进行转化后进行处理比对
13、文件的上传
文件的上传,如果通过表单上传应具备如下条件
A、上传的方式必需为Post方式
B、在form里面应指定上传的属性 enctype="multipart/form-data"
C、在PHP接收端通过$_FILES来接收
<?php
header('content-type:text/html;charset=utf-8');
ini_set('display_errors', true);
echo '<pre>';
var_dump($_FILES['file']); //也可以使用$_FILES来获取全部的数组
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="./test.php" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>
is_uploaded_file,move_uploaded_file
is_uploaded_file($filename) 判断文件是否是通过 HTTP POST 上传的
move_uploaded_file($filename, $destination) 将上传的文件移动到新位置,$filename表示文件的路径,$destination表示目标路径,成功返回true,失败返回false
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="./test.php" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>
<?php
header('content-type; charset=utf-8');
header('refresh:5, url= test.html');
ini_set('display_errors', true); class UploadFile{
private $file;
private $limitSize = 2*1024*1048;
private $limitType = ['image/jpg', 'image/png', 'image/jpeg', 'text/plain'];
private $targetDir = 'd:/uploadFile';
public function __construct($name) {
if($_FILES[$name]['error'] === 4) {
die('请上传文件');
}
$this->file = $_FILES[$name];
} /**检查大小
* @return bool
*/
private function checkSize() {
if($this->file['size'] > $this->limitSize) {
return true;
}
return false;
} private function getExtension() {
return strtolower(substr(strrchr($this->file['name'], '.'),1));
}
/**检查类型
* @return bool
*/
private function checkType() {
//检测实际的文件类型
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo->file($this->file['tmp_name']);
return !in_array($type, $this->limitType) || !in_array($this->file['type'], $this->limitType);
} /**存放的目录及文件名
* @return string
*/
private function getFileDir() {
$dir = $this->targetDir.'/'.date('Ymd');
if(!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$dir .= sprintf('/%s.%s',uniqid('up_', true), $this->getExtension());
return $dir;
} public function init() {
if(is_uploaded_file($this->file['tmp_name'])) {
$this->checkSize()? die(sprintf('上传的内容过大,你只能上传%dK的文件,而你的文件是%dK', $this->limitSize, $this->file['size'])): null;
$this->checkType()? die(sprintf('上传的文件类型不正确,你只能上传%s,类型的文件', implode(',', $this->limitType))): null;
$newName = $this->getFileDir();
if(move_uploaded_file($this->file['tmp_name'], $newName)) {
return $newName;
}else {
return false;
}
}
return 'unKnow';
}
} $f = new UploadFile('file');
$f->init();
?>
如果有多个类似的功能,可以做成一个抽象类,进行继承。或者做成一个普通类进行继承
14、文件的下载(注意文件头的设置)
<?php
class DownLoad {
private $dir = 'd:\yii-basic-app-2.0.15.tgz';
public function __construct() {
if(!$_GET['name'] || $_GET['name'] !== 'test') {
die('请指定特定的文件名');
}
} private function setHeader(int $filesize, string $filename) {
//告诉浏览器我向你回应的内容是文件请保存
//返回的文件
header("Content-type: application/octet-stream");
//按照字节大小返回
header("Accept-Ranges: bytes");
//显示文件大小
header("Content-Length: {$filesize}");
//这里客户端的弹出对话框,对应的文件名
header("Content-Disposition: attachment; filename={$filename}");
} public function init() {
$this->setHeader(filesize($this->dir), sprintf('test.%s', pathinfo($this->dir,PATHINFO_EXTENSION)));
$handle = fopen($this->dir, 'rb');
$size = 1024;
$content = '';
while(!feof($handle)) {
$content .= fread($handle, $size);
}
fclose($handle);
echo $content;
}
} $t = new DownLoad();
$t->init();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="./index.php?name=test">下载</a>
</body>
</html>
php 文件系统函数及目录函数的更多相关文章
- PHP常用文件函数和目录函数整理
一.常用文件函数库 1.basename(); -- 返回路径中的文件名部分. string basename ( string $path [, string $suffix ] ) //给出一个包 ...
- linux 文件名称前后缀操作函数----取目录函数dir、取文件名称函数notdir、取后缀函数suffix、取前缀basename、加后缀函数addsuffix、加前缀addprefix、连接函数join
1.1 文件名操作函数 下面我们要介绍的函数主要是处理文件名的.每个函数的参数字符串都会被当做一个或是一系列的文件名来对待. 1.1.1 取目录函数dir $(dir < ...
- php glob()函数实现目录文件遍历与寻找与模式匹配的文件路径
采用PHP函数glob实现寻找与模式匹配的文件路径,主要讨论glob()函数的作用和用法,利用glob函数读取目录比其它的要快N倍,因为glob函数是内置函数处理起来自然要快. 一,函数原型 arra ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
- php 目录函数和日期函数
continue . break . exit目录函数opendir(); 打开一个文件夹is_file 只判断文件是否存在: file_exists 判断文件是否存在或者是目录是否存在: is_di ...
- matlab添加当前文件夹到函数搜索目录
pwd表示当前路径p = genpath(folderName) 返回一个包含路径名称的字符向量,该路径名称中包含 folderName 以及 folderName 下的多级子文件夹. addpath ...
- PCB MS SQL 标量函数与表值函数(CLR) 实现文件与目录操作
一.C#写SQL SERVER(CLR)实现文件操作 标量函数: 文件移动 ,复制,检测文件存在,写入新文件文本,读取文本,创建目录,删除目录,检测目录是否存在 /// <summary> ...
- python下使用sort()函数对目录下文件名进行多条件排序
目录 1.基础函数 2.例子解析 参考 1.基础函数 a.sort()函数 sort()函数的作用是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表. lists =[1, 5, 1 ...
- 常用PHP函数类目录
说明:用来记录我在开发过程中,经常用到的一些常用函数或者常用类. 常用函数 PHP常用函数 (1) 常用类 PHP表单数据校验类
随机推荐
- vertical-align和text-align属性实现垂直水平居中
HTML: <div class="box"> <div class="content"> <span class="s ...
- CodeForces 280B Maximum Xor Se
题目链接:http://codeforces.com/contest/280/problem/B 题目大意: 给定一个由n个数组成的一个序列,s[l..r] (1 ≤ l < r ≤ n)代表原 ...
- 其他综合-使用Xshell远程连接管理Linux实践
使用Xshell远程连接管理Linux实践 1. Xshell整体优化 1)点击 工具 ,然后选择 选项 2)在 常规 选项中,下面的存放路径根据个人爱好修改(可选默认) 3)在 更新 选项中,将 √ ...
- 洛谷 p1090 合并果子
https://www.luogu.org/problemnew/show/P1090 优先队列的经典题目 体现了stl的优越性 #include<bits/stdc++.h> using ...
- Python——序列化模块
#json 模式 1.dumps.loads 方法 针对内存 dic = {'k1':'v1'} #转换成json import json str_d = json.dumps(dic) #序列化 ...
- git 的简单实用
一. 安装 Git(git_for_windows.xp510.com.rar) 二. 使用 a) 进入到 git bash(命令行工具) b) 初始化user.name,user.email $ g ...
- 字符串格式的方法%s、format和python3.6新特性f-string和类型注解
一.%s msg = '我叫%s,今年%s,性别%s' %('帅哥',18,'男') print(msg) # 我叫帅哥,今年18,性别男 二.format # 三种方式: # 第一种:按顺序接收参数 ...
- linux 安装所有软件可以使用这个网站搜索RPM包
#很方便很实用 强烈推荐 https://pkgs.org/
- 【CQOI2017】【BZOJ4813】小Q的棋盘 DFS
题目描述 有一棵树,你要从\(0\)号点开始走,你可以走\(m\)步,问你最多能经过多少个不同的点. \(n\leq 100\) 题解 出题人的做法是DP(一个简单的树形DP),但是可以直接通过一次D ...
- 爬虫 requests 模块
requests 模块 介绍 使用requests可以模拟浏览器的请求, 比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) ps: requests库发 ...