社区首页 >问答首页 >用于下载文件并检查文件类型的Perl脚本

用于下载文件并检查文件类型的Perl脚本
EN

Stack Overflow用户
提问于 2015-04-29 12:10:40
回答 1查看 826关注 0票数 0

我想做的事情相当简单: 1)从硬编码的URL下载文件(它将始终保持不变) 2)检查文件是否真的是PDF (我认为最好检查神奇的数字%PDF) 3)如果是这样,重命名文件并移动到文件夹xy||如果不是,请相应地重命名。

注意:要在Windows 7系统上运行,这是必需的。

下面是我的代码:

代码语言:javascript
代码运行次数:0
复制
#!/usr/bin/perl
use warnings;
use strict;
use LWP::Simple;
use POSIX qw( strftime );
use File::Copy;
use File::Type;

my $date = strftime("%m/%d/%Y", localtime);
my $url  = "http://www.oracle.com/technetwork/database/options"
          ."/advanced-analytics/r-enterprise/ore-reference-manual-1882822.pdf"; 

my $dlfile = "Test.pdf";
my $resp = '';
my $srcdir = "C:\\pdfscripthome";
my $dest = "C:\\pdfdump";
my $old = "$srcdir/$dlfile";
$resp = getstore( $url, $dlfile );

sub CheckFileType {
    my $chkfile="$srcdir//Test.pdf";
    my $ft = File::Type->new();
    my $file_type = $ft->mime_type($chkfile);

    if ( $file_type eq 'application/pdf' ) {
        move( $old, $dest ) or die "Move $old -> $dest failed: $!";
    }
    else {
        rename ("//$srcdir/Test.pdf", "//$srcdir/NotAValidPDFFile.pdf" )
        || die ("Error in renaming");
    }
}

sub main{
    &CheckFileType();
}

&main;

当我尝试执行时,发生的情况是什么都没有发生。奇怪的是,当我评论

代码语言:javascript
代码运行次数:0
复制
use File::Type;

输出时,它会下载该文件(当然不会进行检查)。

我假设sub CheckFileType { }中的某个地方有错误,但我看不到它。

EN

回答 1

Stack Overflow用户

发布于 2015-05-01 01:27:46

我使用Strawberry Perl v5.20.2在Windows7上成功地执行了您的Perl程序(没有更改)。

我很想提出几个更改,但我决定提供一个简单的更改,这将使您的程序成功完成。

在第25行的mime_type()调用中,将参数$chkfile替换为$dlfile。这将导致mime_type()在调用getstore()期间在第16行查找存储的文件,其中$dlfile作为指定文件名的参数传递。

第25行(原始):

代码语言:javascript
代码运行次数:0
复制
my $file_type = $ft->mime_type($chkfile);

第25行(合并建议的更改):

代码语言:javascript
代码运行次数:0
复制
my $file_type = $ft->mime_type($dlfile);

在没有更改的情况下,Perl程序首先将下载的相对于用户当前工作目录的.\Test.pdf文件存储为文件名PDF,然后使用绝对路径C:\pdfscripthome\Test.pdf查找该文件。

如果用户的当前工作目录为C:\pdfscripthome,则程序成功。在用户的当前工作目录不是C:\pdfscripthome的情况下,程序会失败,因为调用mime_type()时传递的参数包含绝对路径C:\pdfscripthome\Test.pdf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29943371

复制
相关文章
rabbitmq在ios中实战采坑
1. rabbitmq在ios中实战采坑 1.1. 问题 ios使用rabbitmq连接,没过多久就断开,并报错。且用android做相同的步骤并不会报错,错误如下 Received connection: <RMQConnection: 0x600002594080> disconnectedWithError: Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo={NSLocalize
老梁
2019/09/10
1.1K0
我在ThoughtWorks中的敏捷实践
E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。
袁慎建@ThoughtWorks
2018/09/29
2.1K0
我在ThoughtWorks中的敏捷实践
实习第一天,我就辞职了
鱼皮最新原创项目教程,欢迎学习 大家好,我是鱼皮。今天这篇文章是 编程导航星球 的拳辉同学的真实实习经历分享,希望对正在找工作的小伙伴有所帮助和启发。 星球原文链接:https://t.zsxq.com/0bH99BrO7 实习第一天 今天去了心心念念的实习,来到公司的前一天晚上,我兴奋得整晚睡不着。 刚来到公司的时候,热情的人事小姐姐帮我办理好手续,拉我进群,下载钉钉,录指纹,让我十分开心,自己终于可以挣钱了哈哈。 组长带我来到工位,眼前的画面让我有点不太适应。当组长在小组面前介绍我的时候,同事们并
程序员鱼皮
2023/03/29
5060
实习第一天,我就辞职了
134. 精读《我在阿里数据中台大前端》
而阿里经济体中的 ABC,其中的 BIG DATA,即是我们 DT https://dt.alibaba.com/ ,我们用大数据赋能商业,创造价值。
黄子毅
2022/03/14
4550
134. 精读《我在阿里数据中台大前端》
无线无源中继采发仪在工程监测中的应用分析
随着科技的不断发展,无线传感技术在工程监测中的应用越来越广泛。其中,无线无源中继采发仪是一种新型的数据采集设备,能够将传感器数据通过无线信号传输到数据中心。本文旨在探讨无线无源中继采发仪在工程监测中的应用。
河北稳控科技
2023/06/08
1800
无线无源中继采发仪在工程监测中的应用分析
无线无源中继采集采发仪在工程监测中应用
无线无源中继采发仪是一种适用于工程监测领域的仪器,其优点在于便携、灵活、易安装和维护。在传统工程监测中,采集传感器数据需要通过有线连接方式进行,存在布线困难、信号受干扰以及难以扩展等问题。而无线无源中继采发仪通过使用无线信号传输的方式,可以有效解决上述问题。本文将从三个方面着重介绍无线无源中继采发仪在工程监测中的应用。
河北稳控科技
2023/06/08
2290
无线无源中继采集采发仪在工程监测中应用
当我在微调的时候我在微调什么?
从 BERT 开始,预训练模型(PLMs)+微调(finetune)已经成为了NLP领域的常规范式。通过引入额外的参数(新的网络层)和特定任务的目标函数,PLMs在该任务的数据集下经过finetune后,总能取得评价指标上的提升,甚至达到SOTA。
对白
2022/04/01
1.7K0
当我在微调的时候我在微调什么?
大数据在商业中的应用《智能时代--大数据和智能革命重新定义未来》
       美国毒品的问题很难完全遏制住源头,很多人利用废弃工厂、房屋、家里种植大麻,甚至有些人专门买别墅用LED灯管发光种,这样的利润极高,很快又能赚回来一幢别墅的钱。警察没有足够的证据不可以进屋搜查,大数据时代,他们根据每家每户的用电模式和一般居家用电模式对比,就能圈定一些犯罪嫌疑人。利用统计规律和个案做对比,做到精准定位,二是社会已经默认在取证时利用相关性代替直接证据,即强相关性代替因果关系,三是执法的成本大幅下降。
bye
2020/10/29
5160
我,在元宇宙中邂逅了爱情
---- 新智元报道   编辑:桃子 【新智元导读】在元宇宙中寻找另一半,你尝试过吗? 今年年初,一部名为「我们在虚拟现实中相遇」(We Met in Virtual Reality)的元宇宙专题纪录片首映。 其中一段情节讲述了,一位来自英国的肚皮舞娘和住在迈阿密的小伙在虚拟现实中相识,然后在一起的故事。 在元宇宙中的恋爱,你尝试过吗? 元宇宙约会 想要在元宇宙中约会,需要的是一副满电的头显和一颗开放的心。 你和伴侣可以在宁静海湾享受永无止境的海滩日落,可以在一个有魔法、移动的城堡世界里玩
新智元
2022/08/29
3340
我,在元宇宙中邂逅了爱情
纠正 | 我在持续交付课程中的授课错误
在DevOps Master中讲持续交付一课,其中讲到发布频率的篇章,中文版里面的翻译是这样的(来源于精益企业):
用户1593318
2019/11/19
1.5K0
我是这样在 React 中实践 TDD 编程的
在Redux中编写测试听起来肯定有悖直觉。如果你使用了Redux,它可能看起来更加复杂。
前端修罗场
2022/07/29
1.9K0
反思我在管理中犯过的重大错误
近一年来,我在管理中犯下的2个重要错误。该错误导致团队结构不清晰,骨干核心人员不稳定,易流失。
用户9913368
2022/12/17
1.1K0
反思我在管理中犯过的重大错误
数据在企业演进中的价值
本文作者 吴昊:腾讯SaaS加速器导师、纷享销客天使投资人、前执行总裁,具有20年企业信息化和6年SaaS营销团队创新经验。 (SaaS 创业路线图) 每个 To B 创业者都对自己客户的现状相当了解,但你知道在这个变幻莫测的 VUCA 时代,客户的企业究竟会往哪个方向发展吗? 刚过去的这个周末,我在中欧课堂上听了方二教授的创新战略课程,对此有了更全面的的认知。今天给大家分享一下。(课程现场非常精彩,我只陈述了1%的内容,大家自己找机会在各种场合现场听吧。) 方教授的课叫做《互联网和智能商业的创新
腾讯SaaS加速器
2020/06/09
7240
我在移动web开发中遇到的各种问题
目前(2015年8月3日15:02:24)在大部分安卓手机都发现这个问题,触发bug的条件知道了,但是原因未知。触发bug的条件是需要横向滚动的层不能位于纵向滚动不是body的层下面(后面有具体解释)。
黒之染
2018/10/19
1.7K0
我在 MySQL 的那些年
作者:赖铮(Allen Lai),前 MySQL 官方团队成员,专注数据库内核开发近二十年,先后就职于达梦,Teradata,北大方正以及 MySQL InnoDB 存储引擎团队,是达梦数据库内核,方正 XML 数据库,以及 MySQL InnoDB 的 GIS 支持,透明加密功能的主要开发者。现任腾讯 TEG 云架构平台部数据库团队专家工程师,负责腾讯云 CDB 数据库内核的研发。 面试 2012 年的春天,阳光明媚,鸟语花香,我正在张江的一栋橙黄色的大楼里跟我的小伙伴们一起奋力
腾讯技术工程官方号
2020/11/05
6900
我在亦庄见了说中文的爱因斯坦,会比心的熊猫,还有一场意念打字大赛
梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你根本想象不到,现在机器人为了能被人类社会接纳有多努力。 像Siri和扫地机器人一样成为人类日常生活的一部分,是机器人们共同的愿望。 每年在北京亦庄举办的世界机器人大会,成了它们每年展示自己、接受检验、倾听人类意见的考场。 这次在大会场馆担任讲解员的,是一台神似爱因斯坦的仿生机器人。 凑近了仔细看,仿生硅胶材质的皮肤上不但有皱纹和血管,甚至连老年斑都模仿出来了。 这款仿生机器人全身有68个可动关节,说话时的嘴形和面部表情可以根据音频进行匹配。 为
量子位
2023/03/01
3880
我在亦庄见了说中文的爱因斯坦,会比心的熊猫,还有一场意念打字大赛
在 Python 中解析 JSON 数据
json模块是Python 标准库的一部分,它允许你对 JSON 数据进行编码和解码。
雪梦科技
2020/06/28
17.1K0
我在微软的面试经历
大约2-3个月前,我在Linkedin上看到微软员工的一系列消息,是与微软为SDE暑期实习生招聘预赛有关。我对此非常兴奋,不想错过这次机会。
ACM算法日常
2020/11/11
1K0
我在微软的面试经历
python在sqlite中插入数据
python通过引入sqlite的包,就能够直接操作sqlite数据库 import sqlite3 import math cx=sqlite3.connect("mydatabase.sqli
py3study
2020/01/06
3.9K0
我的WCF之旅(3):在WCF中实现双工通信
双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交换模式使服务端回调(Callback)客户端操作成为可能。 一、两种典型的双工MEP 1.请求过程中的回调 这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客
蒋金楠
2018/01/16
1.1K0
我的WCF之旅(3):在WCF中实现双工通信

相似问题

有效地聚集了熊猫的日期时间。

10

熊猫:在完整的数据上重新分割

10

在熊猫数据栏中重新排列行

20

推后采樱桃

10

Regex多采

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文