Python文件操作(六)

在Python中读写文件,操作文件和目录是非常的方便的。操作文件的目录一部分放在io ,另一部分放在io.path,目录下

import os

print(os.path.abspath('.'))

#读文件
f = open('1.txt', 'r',encoding='utf-8')
str = f.read()
print(str)

#写文件

f.close()

f = open('1.txt','w',encoding='utf-8')
f.write('nb');
f.close()

os.rename('1.txt', '2.txt')

Cmd Markdown 简明语法手册

『Cmd 技术渲染的沙箱页面,点击此处编写自己的文档』

Cmd Markdown 简明语法手册

标签: Cmd-Markdown


1. 斜体和粗体

使用 * 和 ** 表示斜体和粗体。

示例:

这是 斜体,这是 粗体

2. 分级标题

使用 === 表示一级标题,使用 — 表示二级标题。

示例:

这是一个一级标题
============================

这是一个二级标题
--------------------------------------------------

### 这是一个三级标题

你也可以选择在行首加井号表示不同级别的标题 (H1-H6),例如:# H1, ## H2, ### H3,#### H4。

3. 外链接

使用 [描述](链接地址) 为文字增加外链接。

示例:

这是去往 本人博客 的链接。

4. 无序列表

使用 *,+,- 表示无序列表。

示例:

  • 无序列表项 一
  • 无序列表项 二
  • 无序列表项 三

5. 有序列表

使用数字和点表示有序列表。

示例:

  1. 有序列表项 一
  2. 有序列表项 二
  3. 有序列表项 三

6. 文字引用

使用 > 表示文字引用。

示例:

野火烧不尽,春风吹又生。

7. 行内代码块

使用 `代码` 表示行内代码块。

示例:

让我们聊聊 html

8. 代码块

使用 四个缩进空格 表示代码块。

示例:

这是一个代码块,此行左侧有四个不可见的空格。

9. 插入图像

使用 ![描述](图片链接地址) 插入图像。

示例:

我的头像

Cmd Markdown 高阶语法手册

1. 内容目录

在段落中填写 [TOC] 以显示全文内容的目录结构。

[TOC]

2. 标签分类

在编辑区任意行的列首位置输入以下代码给文稿标签:

标签: 数学 英语 Markdown

或者

Tags: 数学 英语 Markdown

3. 删除线

使用 ~~ 表示删除线。

~~这是一段错误的文本。~~

4. 注脚

使用 [^keyword] 表示注脚。

这是一个注脚1的样例。

这是第二个注脚2的样例。

5. LaTeX 公式

$ 表示行内公式:

质能守恒方程可以用一个很简洁的方程式 $E=mc^2$ 来表达。

$$ 表示整行公式:

$$sum_{i=1}^n a_i=0$$

$$f(x_1,x_x,ldots,x_n) = x_1^2 + x_2^2 + cdots + x_n^2 $$

$$sum^{j-1}{k=0}{widehat{gamma}{kj} z_k}$$

访问 MathJax 参考更多使用方法。

6. 加强的代码块

支持四十一种编程语言的语法高亮的显示,行号显示。

非代码示例:

$ sudo apt-get install vim-gnome

Python 示例:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None

class SomeClass:
    pass

>>> message = '''interpreter
... prompt'''

JavaScript 示例:

/**
* nth element in the fibonacci series.
* @param n >= 0
* @return the nth element, >= 0.
*/
function fib(n) {
  var a = 1, b = 1;
  var tmp;
  while (--n >= 0) {
    tmp = a;
    a += b;
    b = tmp;
  }
  return a;
}

document.write(fib(10));

7. 流程图

示例

st=>start: Start:>https://www.zybuluo.com
io=>inputoutput: verification
op=>operation: Your Operation
cond=>condition: Yes or No?
sub=>subroutine: Your Subroutine
e=>end

st->io->op->cond
cond(yes)->e
cond(no)->sub->io

更多语法参考:流程图语法参考

8. 序列图

示例 1

Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!

示例 2

Title: Here is a title
A->B: Normal line
B-->C: Dashed line
C->>D: Open arrow
D-->>A: Dashed open arrow

更多语法参考:序列图语法参考

9. 表格支持

示例:

项目 价格 数量
计算机 $1600 5
手机 $12 12
管线 $1 234

10. 定义型列表

名词 1
定义 1(左侧有一个可见的冒号和四个不可见的空格)
代码块 2

这是代码块的定义(左侧有一个可见的冒号和四个不可见的空格)

代码块(左侧有八个不可见的空格)

11. Html 标签

本站支持在 Markdown 语法中嵌套 Html 标签,譬如,你可以用 Html 写一个纵跨两行的表格:

<table>
    <tr>
        <th rowspan="2">值班人员</th>
        <th>星期一</th>
        <th>星期二</th>
        <th>星期三</th>
    </tr>
    <tr>
        <td>李强</td>
        <td>张明</td>
        <td>王平</td>
    </tr>
</table>
值班人员 星期一 星期二 星期三
李强 张明 王平

12. 内嵌图标

本站的图标系统对外开放,在文档中输入

<i class="icon-weibo"></i>

即显示微博的图标:

替换 上述 i 标签 内的 icon-weibo 以显示不同的图标,例如:

<i class="icon-renren"></i>

即显示人人的图标:

更多的图标和玩法可以参看 font-awesome 官方网站。

13. 待办事宜 Todo 列表

使用带有 [ ] 或 [x] (未完成或已完成)项的列表语法撰写一个待办事宜列表,并且支持子列表嵌套以及混用Markdown语法,例如:

- [ ] **Cmd Markdown 开发**
    - [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
    - [ ] 支持以 PDF 格式导出文稿
    - [x] 新增Todo列表功能 [语法参考](https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments)
    - [x] 改进 LaTex 功能
        - [x] 修复 LaTex 公式渲染问题
        - [x] 新增 LaTex 公式编号功能 [语法参考](http://docs.mathjax.org/en/latest/tex.html#tex-eq-numbers)
- [ ] **七月旅行准备**
    - [ ] 准备邮轮上需要携带的物品
    - [ ] 浏览日本免税店的物品
    - [x] 购买蓝宝石公主号七月一日的船票

对应显示如下待办事宜 Todo 列表:

  • [ ] Cmd Markdown 开发
    • [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
    • [ ] 支持以 PDF 格式导出文稿
    • [x] 新增Todo列表功能 语法参考
    • [x] 改进 LaTex 功能
      • [x] 修复 LaTex 公式渲染问题
      • [x] 新增 LaTex 公式编号功能 语法参考
  • [ ] 七月旅行准备
    • [ ] 准备邮轮上需要携带的物品
    • [ ] 浏览日本免税店的物品
    • [x] 购买蓝宝石公主号七月一日的船票

  1. 这是一个 注脚文本。 

  2. 这是另一个 注脚文本。 

cxf生成客户端代码成功,使用抛出异常

今天用cxf生成客户端代码,通过wsdl获取天气预报

wsdl:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

参照博客http://a.qt.hk/v/Csdnblog/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9zb25yaWNrL2FydGljbGUvZGV0YWlscy80NTU3NDY2Mw==

一直报错,折腾了好久

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: No namespace on "html" element. You must send a SOAP request.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156)
at com.sun.proxy.$Proxy32.getWeather(Unknown Source)
at com.devins.ws.weather.WeatherQueryTest.main(WeatherQueryTest.java:18)
Caused by: org.apache.cxf.binding.soap.SoapFault: No namespace on "html" element. You must send a SOAP request.
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.readVersion(ReadHeadersInterceptor.java:109)
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:142)
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:801)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1679)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1517)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1425)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:650)

注意,此客户端工程调用无需引入cxf的相关jar包,引入执行上面的测试代码会报如上错误:

Eclipse无法自动编译出class文件

    有时候用Eclipse或者MyEclipse的时候,发现不能自动编译,web工程下面缺少class文件!
    第一个可能是你的自动编译没打开:project->build automatically;第二个要注意你的工程项目上有没有打小红叉,项目报错时,eclipse是不自动编译的。你可以检查一下是否有些类出错,或是检查一下“构建路径”是否完整,特别是从换机子调试程序时,有些导入jar包的路径不对。
    通常我们遇到的是第二个,就是有的包在别人机器上是有的,但是到你的机器上相同路径是没有的,删去和那个包有关系的,或者添加新的包路径
    eclipse出现不编译工程的现象。怎么刷新classes目录下也是空的。
    具体都操作了:打开project->build automatically   试后不行,还是不编译。
    打开project ——> build automatically 另外 clean一下就可能会编译了,结果还不行。(一般先运行project ——>clean…,然后再执行build automatically)
    eclipse默认是选自动编译。即使取消自动编译,手动build工程,也不能编译。

    出现这种情况一般有以下几种原因:

    无法编译class文件,说明项目有错,删除在view’problem’,重新编译就可以了

   

  项目错误,可能有以下可能性

    1.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果。

    2.想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total Commander.此时编译也不会通过,在View下problems下可能会提示“con’t delete classes ……”。关掉其它程序重新编译即可。
    3.还有种情况是remove掉 JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚。
    4.项目引用了其他的项目,而被你引用的项目引用了某个不用的jar包之类
    如果你使用了maven你可以在命令提示行下,跳转到项目路径,执行mvn eclipse:clean eclipse:eclipse重新编译项目

Python发布自定义模块(五)

php开发中,我们定义好了一个公用函数,则会将代码放在公用的文件中,需要用到的时候,使用require或者include函数包含这个公用的文件,即可在程序中实现可重用。接下来看看python中如何操作

1. 在e:/python目录下新建一个文件夹nester做实验,建立2个py文件分别是nester.pysetup.py

          nester.py

#计算圆的面积,参数为半径
p = 3.14
def area(r=1):
    # p = 3.14
    return p * r

          setup.py

from distutils.core import setup
 
setup (
    name = 'nester',
    version = '1.0.1',
    py_modules = ['nester'],
    author = 'Rick.xu',
    author_email = 'jkxyx205@163.com',
    description = 'calculate area of circle',
)

注意:
name和py_modules这两个参数一定要与nester.py文件名相同,否则发布安装时会发出模块文件找不到的错误

2. 发布模块

发布模块,但还不能在程序中被调用,还需要安装,接着看

3.安装模块

4.使用模块

import nester
nester.area(2)

这里需要注意一个问题,很多新手会这样调用:area(2)
系统会发出这样的一个错误信息:NameError: name ‘area’ is not defined
原因是当模块创建以后,系统自动创建一个与模块名称相同的命名空间(nester),并将函数放在命名空间中,简单的通过area调用,自然无法找到函数,正确的方法:
nester.area(2)
直接把命名空间带上即可。