导航

公墓网

当前位置: 首页 > 公墓资讯

directory.exists

更新时间:2025 08 22 21:14:00 作者 :庆美网 围观 : 35次

大家好,关于directory.exists很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

物流状态一直未更新,无法查询物流状态而导致客户投诉、差评、退款;

单量太大,无法逐一查询每个包裹的状态,无法及时了解包裹状态;

由于快递的各种原因导致的客户体验降低,流失客户;

directory.exists

此时物流轨迹追踪就可以随时让您知道每一个包裹的进度,解决以上的问题,留存客户。

本期分享的就是如何用快递鸟将最新的物流轨迹推送到我们服务器,我们既然要接收它的信息,就需要提供一个服务地址给它,以C#为列,我们新建一个接收页面,我的接收文件: KdniaoHandler.aspx,把他部署到服务器,

接收地址:http://www.你的域名.com/KdniaoHandler.ashx

登陆快递鸟官网,通过快递鸟提供的沙箱调试页面进去测试接口

调试页面地址:关注公众号:快递鸟API,授权申请APIKey:http://www.kdniao.com/reg?utm_source=JRTT&utm_medium=XMT&utm_campaign=KDN&utm_content=apikj&utm_term=A1

测试的截图:

一、接口描述/说明

推送接口(商户实现)

(1)客户需要按快递鸟要求开发接口,保证信息的正常接收。(2)快递鸟主动推送时,物流信息接收接口由客户提供。(3)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):\”application/x-www-form-urlencoded;charset=utf-8\”。(4)运单物流信息全量推送(每次推送的运单物流信息包括运单当前所有的的物流信息)。

请求系统级参数说明:

备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)

二、接口参数

推送接口

应用级输入参数

订阅查询结果(RequestType:101)

通过轨迹查询(订阅查询)接口订阅到快递鸟的数据,快递鸟推送时,会将推送的RequestType的值置为101,同时返回下列数据

请求内容字段定义:

货款状态(RequestType:107)

用户通过电子面单使用快递鸟货到付款等金融服务时,快递鸟会将该订单的金融状态通过接口推送给用户。

请求内容字段定义:

返回参数定义

推送接口(商户实现)

请求示例 JSON (订阅查询结果) { \”EBusinessID\”: \”1109259\”, \”Count\”: \”2\”, \”PushTime\”: \”2015-3-11 16:21:06\”, \”Data\”: [ { \”EBusinessID\”: \”1109259\”, \”OrderCode\”: \”\”, \”ShipperCode\”: \”EMS\”, \”LogisticCode\”: \”5042260908504\”, \”Success\”: true, \”Reason\”: \”\”, \”State\”: \”2\”, \”CallBack\”: \”0\”, \”Traces\”: [ { \”AcceptTime\”: \”2015-03-06 21:16:58\”, \”AcceptStation\”: \”深圳市横岗速递营销部已收件,(揽投员姓名:钟定基;)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-07 14:25:00\”, \”AcceptStation\”: \”离开深圳市 发往广州市\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-08 00:17:00\”, \”AcceptStation\”: \”到达广东速递物流公司广航中心处理中心(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-08 01:15:00\”, \”AcceptStation\”: \”离开广州市 发往北京市(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-09 09:01:00\”, \”AcceptStation\”: \”到达北京黄村转运站处理中心(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-09 18:39:00\”, \”AcceptStation\”: \”离开北京市 发往呼和浩特市(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-10 18:06:00\”, \”AcceptStation\”: \”到达 呼和浩特市 处理中心\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-11 09:53:48\”, \”AcceptStation\”: \”呼和浩特市邮政速递物流分公司金川揽投部安排投递(投递员姓名:安长虹;)\”, \”Remark\”: \”\” } ] }, { \”EBusinessID\”: \”1109259\”, \”OrderCode\”: \”\”, \”ShipperCode\”: \”EMS\”, \”LogisticCode\”: \”5042260943004\”, \”Success\”: true, \”Reason\”: \”\”, \”State\”: \”2\”, \”CallBack\”: \”0\”, \”Traces\”: [ { \”AcceptTime\”: \”2015-03-07 15:26:09\”, \”AcceptStation\”: \”深圳市横岗速递营销部已收件,(揽投员姓名:周宏彪;)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-08 16:32:00\”, \”AcceptStation\”: \”离开深圳市 发往广州市\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-09 00:58:00\”, \”AcceptStation\”: \”到达广东速递物流公司广航中心处理中心(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-09 01:15:00\”, \”AcceptStation\”: \”离开广州市 发往北京市(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-10 05:20:00\”, \”AcceptStation\”: \”到达北京黄村转运站处理中心(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-10 11:59:00\”, \”AcceptStation\”: \”离开北京市 发往廊坊市(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-10 14:23:00\”, \”AcceptStation\”: \”到达廊坊市处理中心(经转)\”, \”Remark\”: \”\” }, { \”AcceptTime\”: \”2015-03-11 08:55:00\”, \”AcceptStation\”: \”离开廊坊市 发往保定市(经转)\”, \”Remark\”: \”\” } ] } ] }

{ \”EBusinessID\”: \”1109259\”, \”Count\”: \”2\”, \”PushTime\”: \”2015-3-11 16:21:06\”, \”Data\”: [ { \”EBusinessID\”: \”1109259\”, \”OrderCode\”: \”\”, \”ShipperCode\”: \”EMS\”, \”LogisticCode\”: \”5042260908504\”, \”Success\”: true, \”Reason\”: \”\”, \”State\”: \”2\”, \”CallBack\”: \”0\”, \”OrderState\”:\”1\”, \”AccountName\”:\”张三\”, \”AccountTel\”:\”xxxxxxx\”, \”AccountNum\”:\”0321\” }, { \”EBusinessID\”: \”1109259\”, \”OrderCode\”: \”\”, \”ShipperCode\”: \”EMS\”, \”LogisticCode\”: \”5042260908522\”, \”Success\”: true, \”Reason\”: \”\”, \”State\”: \”2\”, \”CallBack\”: \”0\”, \”OrderState\”:\”1\”, \”AccountName\”:\”张三\”, \”AccountTel\”:\”xxxxxxxxxx\”, \”AccountNum\”:\”0321\” } ] }

{ \”EBusinessID\”: \”1151847\”, \”UpdateTime\”: \”2016-08-09 16:42:38\”, \”Success\”: true, \”Reason\”: \”\” } KdniaoHandler.ashx

<%@ WebHandler Language=\”C#\” Class=\”KdniaoHandler\” %>using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Newtonsoft.Json;using Newtonsoft.Json.Converters;///

/// 作者:yanghanwen/// 联系QQ:xxxxx///public class KdniaoHandler : IHttpHandler { ///

订阅接口的处理机制:用户将快递单号订阅给快递鸟,快递鸟内部接收信息并按每家物流公司轨迹的生成规律实时动态调用物流公司给快递鸟提供的专用接口, 查询有新轨迹就按客户要求推送。如没有最新轨迹,两个小时后会再次触发接口调用,如有更新就将全量数据推送给用户,如果没有更新,最晚每2小时轮询,直到运单签收。

///

///public void ProcessRequest (HttpContext context) {context.Response.ContentType = \”text/plain\”;//接收请求 获取到快递鸟推送过来的请求报文var requestData = context.Request.Form[\”RequestData\”];var requestType = context.Request.Form[\”RequestType\”];var dataSign = context.Request.Form[\”DataSign\”]; //调试阶段存储日志 方便追踪问题WriteTextLog(\”RequestData:\”, requestData);WriteTextLog(\”RequestType:\”, requestType);WriteTextLog(\”DataSign:\”, dataSign);

这里提供给快递鸟的接口一定不要做登录权限验证,否则快递鸟无法推送信息。 推送接口要在5S内对快递鸟请求做出响应,返回快递鸟所需的参数。成功获取到报文以后,储存并迅速返回响应, 内部逻辑业务可异步处理。每个客户处理的业务逻辑复杂程度不一样,如果客户对数据进行处理,再做出响应,会造成网络超时,传输效率低下。 在没有返回信息或者返回超时, 以及返回不符合规定的内容,快递鸟会判断为客户接收失败。 接收失败后会重试推送2次,首次间隔15分钟,二次间隔30分钟,重试2次都未成功,不再推送,直到下次有新轨迹时再次推送。我们一定要严格按照技术文档进行返回。

PushResponse response = new PushResponse();response.EBusinessID = \”1151847\”;response.UpdateTime = DateTime.Now.ToString(\”yyyy-MM-dd HH:mm:ss\”);response.Success = true;response.Reason = \”成功\”;string result = ToJson(response); //联调的时候可以返回固定的接收成功的报文// result = \”{\\\”EBusinessID\\\”: \\\”1151847\\\”, \\\”UpdateTime\\\”: \\\”\”+DateTime.Now.ToString(\”yyyy-MM-dd HH:mm:ss\”)+\”\\\”, \\\”Success\\\”: true, \\\”Reason\\\”: \\\”成功\\\” }\”;context.Response.Write(result);} public bool IsReusable {get {return false;}}///

/// 写入日志到文本文件//////动作///日志内容public static void WriteTextLog(string action, string strMessage){try{DateTime time = DateTime.Now;string path = AppDomain.CurrentDomain.BaseDirectory + @\”\\LogInfo\\\”;if (!Directory.Exists(path))Directory.CreateDirectory(path); string fileFullPath = path + time.ToString(\”yyyy-MM-dd\”) + \”.System.txt\”;StringBuilder str = new StringBuilder();str.Append(\”Time: \” + time.ToString() + \”\\r\\n\”);str.Append(\”Action: \” + action + \”\\r\\n\”);str.Append(\”Message: \” + strMessage + \”\\r\\n\”);str.Append(\”———————————————————–\\r\\n\\r\\n\”);StreamWriter sw;if (!File.Exists(fileFullPath)){sw = File.CreateText(fileFullPath);}else{sw = File.AppendText(fileFullPath);}sw.WriteLine(str.ToString());sw.Close();sw.Dispose();}catch (Exception e){ }} public class PushResponse{////// 订阅用户ID///public string EBusinessID{get;set;} ////// 时间///public string UpdateTime{get;set;} ////// 成功与否:true,false///public bool Success{get;set;} ////// 失败原因///public string Reason{get;set;}} ////// 序列化JSON数据/////////public static string ToJson(object o){IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();timeFormat.DateTimeFormat = \”yyyy-MM-dd HH:mm:ss\”;return JsonConvert.SerializeObject(o, Newtonsoft.Json.Formatting.None, timeFormat);} ////// 反序列化JSON数据////////////public static T ToObject(string json){return JsonConvert.DeserializeObject(json);}}

调用第三方物流接口,替换自己的key就能直接使用,主要实现了物流在线轨迹查询,订单订阅,轨迹推送,支持500多家的快递查询接口,包括主流的四通一达,支持上门取件服务,其他接口调用,修改调用指令和参数就能实现。

这里给大家提供源码下载:关住公众号(快递鸟API),后台回复“源码下载”

更多快递接口api技术干货、接口实操教程、物流行业知识,关住我们的公众号【快递鸟API】(kuaidiniaoapi)、抖音【快递鸟】。如果你觉得以上内容对你有用,欢迎点赞、评论、转发。你的认可是我持续分享的动力!

有不清楚的问题,欢迎大家留言一起探讨。​

一文总结saltstack的十一个常用模块,附实例讲解

SaltStack 通过模块来实现管理,具备丰富的模块功能,命令形式也比较自由。

今天主要介绍一下saltstack常见的一些模块。

常用执行模块如下:

1、功能

实现被控主机的crontab操作

2、用法

3、实例

3.1、为指定的用户设置cron定时任务

3.2、查看minion端定时任务

1、功能

实现系统层面的压缩包调用,支持gzip、gunzip、rar、tar、unrar、unzip等

2、用法

3、实例

3.1、zip/unzip解压及压缩

3.2、tar压缩

注:tar不支持模块解压

3.3、gzip/gunzip解压及压缩

1、功能

实现远程的命令行调用执行(默认具备root操作权限,使用时慎重)

2、用法

3、实例3.1、查看内存

3.2、执行脚本

3.3、执行shell命令

1、功能

实现远程文件、目录的复制,以及下载URL文件等操作

2、用法

3、实例

3.1、将master端的/etc/hosts文件复制到minion端的salt cache目录(/var/cache/salt/minion/localfiles/)

3.2、将master端salt主目录下面的目录复制到minion端的/opt目录下

3.3、下载URL内容到被控主机指定位置(/tmp/index.html)

1、功能

实现被控主机通用DNS操作2、用法

3、实例

3.1、添加minion端的hosts域名解析信息

3.2、删除minion端的hosts域名解析信息

1、功能

被控主机常见的文件操作,包括文件读写、权限、查找、校验2、用法

3、用法

3.1、修改所有minion端的/etc/passwd文件的属组、用户权限,等价于chown root:root /etc/passwd

3.2、复制文件/文件夹

3.3、检查所有被控主机/etc目录是否存在,存在则返回True,检查文件是否存在使用file.file_exists方法

3.4、获取所有被控主机/etc/passwd的stats信息

3.5、获取及修改权限

3.6、在所有被控主机创建/opt/test目录

3.7、将所有被控主机/etc/httpd/httpd.conf文件的LogLevel参数的warn值修改为info

3.8、给所有被控主机的/tmp/test/test.conf文件追加内容‘maxclient 100’

3.9、删除所有被控主机的/tmp/foo文件

3.10、在所有的minion端的/opt目录下创建c.txt文件

3.11、将所有minion端/root目录下的a.sh文件移动到/opt目录下

3.12、将所有minion端的/root目录下的a.sh文件重命名为/opt目录下的b.sh

3.13、查找所有minion端/opt目录下所有以.tar.tz结尾的且文件大小大于2m的文件

3.14、查找所有minion端的/var目录下30天以内且大于10m的文件

1、功能

返回被控主机网络信息。

2、用法

3、实例

3.1、查询minion端dig、ping、traceroute目录域名信息

3.2、查询minion端网卡ens160的物理地址

3.3、查询minion端的ip地址

3.4、查询minion端主机的子网信息

1、功能

被控主机程序包管理,如yum、apt-get等

2、用法

3、用法

3.1、在所有的minion端安装httpd服务

3.2、卸载所有minion端的httpd服务

3.3、在所有minion端下载httpd软件包

1、功能

被控主机程序包服务管理。

2、用法

3、实例

3.1、在所有的minion端启动httpd服务

3.2、在所有的minion端关闭httpd服务

3.3、在所有的httpd端查看httpd服务的状态

3.4、在所有的httpd端重新加载一次服务

1、功能

被控主机用户组管理。

2、用法

3、实例

3.1、在所有的minion端创建一个gid为500的test组

3.2、返回test用户组信息

3.3、在所有的minion端删除test组

3.4、添加一个用户到指定组中。(必须是一个已经存在的组和已存在的用户)

1、功能

被控主机用户管理

2、用法

3、实例

3.1、在minion端上创建一个用户test

用法:salt \’*\’ user.add name

3.2、返回用户信息

3.3、在minion端删除一个用户

用户评论

笑傲苍穹

目录?不存在?!看来我需要好好检查一下文件路径了!

    有17位网友表示赞同!

一笑抵千言

“directory.exists” 这句话真厉害,瞬间让我想到项目中那些恼人的找不到文件的错误!

    有15位网友表示赞同!

心悸╰つ

这种方法真是太棒了!省去了很多不必要的麻烦啊。在学习编程的时候经常会遇到这样的问题,有了这个方法就好解决啦!

    有11位网友表示赞同!

﹎℡默默的爱

“directory.exists“ 这句话真是个好东西,每次开发项目的时候都用到,简直是必备的技能!

    有20位网友表示赞同!

终究会走-

我经常遇到这样的情况,目录 mysteriously disappeared ! 后来才知道原来是权限的问题啊!希望可以详细介绍一下怎么解决这个问题呢?

    有13位网友表示赞同!

日久见人心

这个工具太棒了,特别是处理大量文件的时候,效率超级高~

    有6位网友表示赞同!

花菲

这句话的解释非常清晰易懂,对于新手小白来说真是太有帮助了!

    有12位网友表示赞同!

心亡则人忘

我觉得“directory.exists” 这个判断很重要,可以避免程序在找不到目录时崩溃。不过是不是可以顺便介绍一下如何创建一个新的目录呢?

    有10位网友表示赞同!

夏至离别

以前总是手动一个个打开文件夹确认是否存在,现在有了这个方法简直是省心啊 !

    有15位网友表示赞同!

身影

在我的项目中经常会用到“directory.exists”,真是太实用了!希望以后还能更新一些更高级的用法!

    有12位网友表示赞同!

景忧丶枫涩帘淞幕雨

我觉得有些时候直接创建目录比判断是否存在的效率更高啦

    有10位网友表示赞同!

眼角有泪°

这篇博客真是一目了然,把 “directory.exists” 的使用场景讲得清晰易懂。我第一次了解到这种方法,真是受益匪浅!

    有12位网友表示赞同!

别在我面前犯贱

感觉“directory.exists” 这个说法有点抽象,直接用代码示例更容易理解吧?

    有6位网友表示赞同!

歇火

这个方法的确很实用,可以让程序更加 robust 。但是有没有什么其他的解决方案呢?例如使用第三方库之类的,会不会更方便一些?

    有12位网友表示赞同!

罪歌

我一直使用的是其他方式判断目录是否存在,现在才知道有这么简洁的方法! 感谢分享!

    有10位网友表示赞同!

夏日倾情

这个话题很有意思啊!我最近也在学习文件的处理,看来这块技术要好好加强一下了~

    有16位网友表示赞同!

oО清风挽发oО

感觉标题有点简略,能不能更具体一点?比如 “如何使用directory.exists判断目录是否存在” 或 “Python中DIRECTORY_EXISTS方法的详解” 吧!

    有11位网友表示赞同!

ー半忧伤

对我这种新手来说,这篇博客真是太有用啦!希望以后还有更多关于文件操作的讲解。

    有8位网友表示赞同!

漫长の人生

真想看看代码示例啊~ 直接用代码展示效果总比文字描述要清晰很多

    有10位网友表示赞同!

标签: 公墓资讯
相关资讯
  • 女性为什么不再流行带避孕环?

    嘿,亲爱的小伙伴们,你们有没有发现最近避孕环好像不再流行了?是不是有点意外呢?别着急,今天我就来和大家聊聊这个话题。首先,我们会一起回顾一下避孕环的历史发展和流行原因。接着

    2025-08-22 18:57:15 公墓资讯 
  • 女性两个月没有来月经是什么原因?

    嘿,亲爱的姑娘们,你们有没有遇到过这样的情况:两个月都没有来月经?别慌张,小编在这里给你们解答一下!首先,让我们来了解一下什么是月经周期及其正常变化。然后,我们会探讨两个月没有

    2025-08-22 18:53:15 公墓资讯 
  • 女性专科医院免费咨询服务

    嗨,亲爱的女性朋友们!你们有没有遇到过一些女性健康问题,却苦于没有合适的医院咨询?别担心,现在有好消息要告诉你们!最近,一家专门为女性服务的医院推出了免费咨询服务!是不是很心动

    2025-08-22 18:42:15 公墓资讯 
  • 女性不育的征兆有哪些?

    女性不育是一种常见但备受关注的问题,它不仅会影响到女性的身心健康,也会给家庭带来巨大的压力。那么,你知道什么是女性不育吗?它又会对女性造成怎样的影响呢?如果你想了解更多关

    2025-08-22 18:37:15 公墓资讯 
  • 女性不来月经的原因有哪些?

    嗨,亲爱的读者们!今天我为大家带来一个关于女性健康的话题,就是“女性不来月经的原因有哪些?”。相信很多女性都有过月经不调的经历,而这种情况可能会给我们带来一些困扰。那么,到

    2025-08-22 18:33:14 公墓资讯 
  • 女性不排卵的表现症状有哪些?如何判断自己是否不排卵?

    嘿,亲爱的小伙伴们,你们是否曾经听说过“不排卵”这个词?它可不是在排队时不给别人让路哦,而是指女性身体内某些原因导致卵子无法正常释放的情况。那么,你知道女性不排卵的表现症

    2025-08-22 18:25:14 公墓资讯