取得一个文件夹下的文件,并保存在一个文件中.

 //文件时间转DateTime
function   FileTimeToDateTime(const   AFileTime:TFileTime):TDateTime;
var
    SYSTime:TSystemTime;
begin
    if   FileTimeToSystemTime(AFileTime,SYSTime)   then
        Result:=SystemTimeToDateTime(SYSTime)
    else   Result:=0;
end;

function   PathRelativePathTo(pszPath:LPSTR;   pszFrom:LPCSTR;   dwAttrFrom:DWORD;
    pszTo:LPCSTR;   dwAttrTo:DWORD):BOOL;   stdcall;
    external   "shlwapi.dll "   name   "PathRelativePathToA ";

//取得相对路径
function   GetFileRelativePath(CurPath:string;   const   Dest:string;   const   NoDot:Boolean=False):string;
var
    ResultPath:   array[0..1024]   of   Char;//路径转换结果
begin
    CurPath:=ExtractFileDir(CurPath)+ " ";
    if   PathRelativePathTo(ResultPath,   PChar(CurPath),   FILE_ATTRIBUTE_DIRECTORY,
          PChar(Dest),   FILE_ATTRIBUTE_DIRECTORY)   then
    begin
        Result   :=   ResultPath;
        if   NoDot   then
            Result:=Copy(Result,3,Length(Result)-2);
    end
    else
        Result   :=   Dest;
end;

//得到文件列表
procedure   GetFileList(const   aDir,aFilter:string;   const   FileName:TFileName;AbSolutePath:Boolean=True;Recursion:Boolean=False);
{aDir:文件路径.   aFilter:通配符(所有文件则*.*).FileName:输出文件名;AbSolutePath:使用绝对路径;Recursion:是否递归搜索}
var
    aList:TStringList;

    procedure   AddFiles(TmpDir:string);
    var
        SR:TSearchRec;
        Dir:string;
        FileDir:string;
    begin
        Dir:=IncludeTrailingPathDelimiter(TmpDir);
        if   AbSolutePath   then
            FileDir:=Dir
        else   FileDir:=GetFileRelativePath(IncludeTrailingPathDelimiter(aDir),Dir,True);
        if   FindFirst(Dir+aFilter,faAnyFile,SR)=0   then
        begin
            repeat
                if   (SR.Name < > ". ")   and   (SR.Name < > ".. ")   then
                begin
                    if   SR.Attr=faDirectory   then
                    begin
                        if   Recursion   then
                            AddFiles(Dir+SR.Name);
                    end
                    else
                        aList.Add(FileDir+SR.Name+#9#9+
                            FormatDateTime( "yyyy-mm-dd   hh:nn:ss ",FileTimeToDateTime(SR.FindData.ftLastWriteTime)));
                end;
            until   FindNext(SR) < >0;
            SysUtils.FindClose(SR);
        end;
    end;
begin
    aList:=TStringList.Create;
    try
        AddFiles(aDir);
        aList.SaveToFile(FileName);
    finally
        aList.Free;
    end;
end;

//使用方法:
procedure   TForm1.btn2Click(Sender:   TObject);
begin
    //文件保存在D:/abc.txt
    GetFileList(Edit1.Text, "*.* ", "D:/abc.txt ",chkbx2.Checked,chkbx1.Checked);
end;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,我可以为您解答这个问题。 首先,您可以使用Python的requests和BeautifulSoup库来爬取网页内容,并通过正则表达式匹配到所有的链接。具体的代码示例如下: ```python import requests from bs4 import BeautifulSoup import re import os # 发送https请求获取网页内容 url = 'https://www.8kmm.com/zh-CN/EntertainmentMenu' response = requests.get(url) # 使用BeautifulSoup解析网页 soup = BeautifulSoup(response.content, 'html.parser') # 获取菜单下所有网站的链接 links = [] for a_tag in soup.find_all('a'): if a_tag.has_attr('href') and 'EntertainmentMenu' not in a_tag['href']: links.append(a_tag['href']) # 按照网站二级分类创建文件保存链接 for link in links: # 解析链接的二级分类 m = re.match('.*/EntertainmentMenu/(.*?)/(.*?)/(.*?)\.html', link) if m: folder_path = m.group(1) + '/' + m.group(2) file_path = folder_path + '/' + m.group(3) + '.txt' try: # 创建文件夹文件 os.makedirs(folder_path, exist_ok=True) with open(file_path, 'w', encoding='utf-8') as f: f.write(link) except Exception as e: print(e) ``` 这段代码会将链接保存在以二级分类名为文件名的文本文件,存储在以一级分类名为文件夹名的目录下。 需要注意的是,该网站的内容是动态生成的,可能会存在反爬虫机制。在爬取时需要设置请求头、限制爬取速度等措施,避免被封IP。另外,爬虫行为需要遵守相关法律法规和网站的使用协议,建议在爬取前先与网站管理员联系取得授权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值