精华内容
下载资源
问答
  • 电脑清洗后开机风扇转屏幕不亮的异常现象
    千次阅读
    2019-12-02 22:16:35

    前段时间搬家,顺便清理电脑主机箱,箱内和主板都擦除了灰尘,内存条也擦拭完,并把cpu风扇和散热器拿下来冲洗干净,涂上导热硅脂装好,开机后奇迹出现了:风扇转而屏幕不亮,键盘常亮,主板没有任何报警,BIOS也无法进入。

    于是尝试以下方法:

    1. 重新插拔内存、CPU以电源相关接线;
    2. 取下主板电池清除时钟,再装上;
    3. 更换内存条、主板电池;
    4. 拿掉散热器,开机后用手指触摸CPU光脊背,有逐渐发热感,说明CPU可能还在工作;
    5. 祈祷;
    6. 联系淘宝卖家,对方给出的方法也在我试过的范围之内,并说CPU只保一年,让我把机箱发回检修;
    7. 已经快夜里12点了,关机睡觉前还是有点不死心,看着所有灯一直亮着的键盘,蓦然间双手鬼使神差的照着键盘乱敲一气,突然,不知触发了哪个机关,键盘灯瞬间全部熄灭,我还没反应过来,又重新亮起,听着CPU风扇停了一下又开始转了,我的心被这熟悉的声音搞得扑通扑通的。果然,BIOS画面现前,熟悉的提示:刚才抠电池导致时钟未设置,按F1继续。接下来就不是问题了,重启两下一切正常。躺在床上闭眼前赶快告诉淘宝店家不用等我的快递了。

    总结:常规的方法试尽之后,就看运气看福报了。命里拥有终须有,命里没有莫强求,修不好电脑,就好好修自己的命吧!

     

     

    更多相关内容
  • 日期选择控件(可防止屏幕旋转抛出的异常
  • surface pro触摸屏幕出现异常

    千次阅读 2019-04-01 18:05:36
    surface pro触摸屏幕出现异常 我的surface pro前一段时间装完虚拟机之后忽然屏幕的一个宽条无法用触控笔或者手指书写,进行了很多尝试。 以下是我各种尝试的合集 首先查看系统有没有更新到最新版本 ,我当时正好...

    surface pro触摸屏幕出现异常

    我的surface pro前一段时间装完虚拟机之后忽然屏幕的一个宽条无法用触控笔或者手指书写,进行了很多尝试。

    以下是我各种尝试的合集

    1. 首先查看系统有没有更新到最新版本 ,我当时正好没有更新,但事实告诉我不是更新的原因,注意在充电情况下更新,不然很容易gg

    2. 如果上一步没有用,双按钮关机的方法:(首先要确保设备加密是关闭的):单击开始菜单——设置–更新和安全–设备加密–查看设备加密的状态,如果是开启,需要把设备加密关闭掉。然后把surface关机。关机后,同时按住音量增加键和电源键15秒,15秒的期间,电脑不管出现任何画面,都不要松手。按满15秒松手,隔5秒按电源键开机。

    3. 很显然,我的电脑上面这个方法也没有能救好,第三次尝试:卸载重装触控驱动:进入桌面,长按左下角微软图标(或者单击右键),选择设备管理器,点开“固件”前面的小三角,找到“surface touch”, 单击右键卸载,卸载的时候不要勾选“删除此设备的驱动软件”,卸载完之后,回到桌面,选择电源,重启设备。

    4. 第四次尝试:运行sdt检测工具 具体教程地址如下
      https://answers.microsoft.com/zh-hans/surface/forum/surfbook-surfupdate/sdt下载运行步/d284145f-1e8a-47db-8b85-e3fba642cf08

    5. 最后就是重置大法了,记得在重置前一定要记得备份
      从屏幕的右边向左滑动—更新和安全—恢复—重置此电脑—选择开始—选择删除所有内容—选择删除文件并清理驱器—然后进行重置。

    当然,以上这些都没有救活我的屏幕,我选择了报修,毕竟还在保修期内,微软的售后还不错呢,现在就是拿着修好后的苏菲写下的这篇。嘻嘻

    最推荐的还是有问题就问微软售后啦

    展开全文
  • 在项目中,有一个重要的业务模块,需要将Android设备上的部分界面显示到扩展屏幕上,例如新接入的显示器,投影仪等。Android提供了一个Presentation的API接口能够实现该需求,使用起来也非常简单,只需要构建一个...

    在项目中,有一个重要的业务模块,需要将Android设备上的部分界面显示到扩展屏幕上,例如新接入的显示器,投影仪等。Android提供了一个PresentationAPI接口能够实现该需求,使用起来也非常简单,只需要构建一个集成Presentation接口的一个实体类,然后show出来就行了,其实Presentation继承自Dialog,它具有Dialog所有的特性,这样理解就很简单了,就是将一个Dialog弹出到指定显示设备上就好了。功能很快实现了,并且看起来还不错,可是在提交给测试后,测试人员在测试反复插拔显示设备和Android设备的连接线时,出现了如下崩溃异常:

     

    java.lang.IllegalArgumentException:View=com.android.internal.policy.impl.PhoneWindow$DecorView{4204b710 V.E.....R.....I. 0,0-1920,1080} not attached to window manager

     

            atandroid.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:370)

     

            at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:299)

     

            atandroid.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:84)

     

            at android.app.Dialog.dismissDialog(Dialog.java:329)

     

            at android.app.Dialog.dismiss(Dialog.java:312)

     

            at android.app.Dialog.cancel(Dialog.java:1114)

     

            at android.app.Presentation.handleDisplayRemoved(Presentation.java:265)

     

            at android.app.Presentation.access$100(Presentation.java:141)

     

            at android.app.Presentation$2.onDisplayRemoved(Presentation.java:331)

     

            atandroid.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate.handleMessage(DisplayManagerGlobal.java:455)

     

            at android.os.Handler.dispatchMessage(Handler.java:102)

     

            at android.os.Looper.loop(Looper.java:136)

     

            at android.app.ActivityThread.main(ActivityThread.java:5017)

     

            at java.lang.reflect.Method.invokeNative(Native Method)

     

            at java.lang.reflect.Method.invoke(Method.java:515)

     

             atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)

     

            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)

     

            at dalvik.system.NativeStart.main(Native Method)

     

    通过查资料后,分析了一下原因,应该是因为外接显示设备的连接线在拔出时正好处于Presentation窗口所依赖的Activity处于关闭流程,所以导致not attached to window manager的异常错误,然后通过如下两种方式进行了改善:

     

    1. 注册外接显示设备的插拔监听,并在监听到移除事件时将Presentation窗口dismiss

     

    displayManager = (DisplayManager)UiApplication.getInstance().getSystemService(Context.DISPLAY_SERVICE);

    displayManager.registerDisplayListener(newDisplayListener()

    {

       @Override

       public void onDisplayRemoved(int displayId) {     

                   if(presentation != null) {

                     presentation.dismiss();

           }

             ......

        }

     

       @Override

       public void onDisplayChanged(int displayId) {

           ......

        }

     

       @Override

       public void onDisplayAdded(int displayId) {

           ......

        }

    }, null)

    2.  保证Presentation生命周期在Activity内部,提前将presentation关掉。

    @Override

    protected void onStop()

    {

        super.onStop();

       try

        {

           if (UiApplication.presentation != null)

           {

               UiApplication.presentation.cancel();

               UiApplication.presentation = null;

           }

        }

       catch (Exception e)

        {

           Log.exception(TAG, e);

        }

    }

     

    经过以上改动后,确实有段时间没有出现过问题,正在以为问题已经修复时候,又出现了上面的崩溃现象,简直无法想象。经过仔细看代码逻辑,找不到问题出在哪里,在网上找了许久,没有相关的信息。仔细跟了一下源码后,发现了一些以前遗漏的问题:

    1.      其实Android本身已经处理了外接显示设备插拔事件,我们根本不需要特殊处理,当连接线拔掉时,系统会先通知设备移除,然后自动调用Presentationcancel方法。

    /**

     * Called by the system when the properties ofthe {@link Display} to which

     * the presentation is attached have changed.

     *

     * If the display metrics have changed (forexample, if the display has been

     * resized or rotated), then the systemautomatically calls

     * {@link #cancel} to dismiss the presentation.

     *

     * @see #getDisplay

     */

    publicvoid onDisplayChanged() {

    }

     

    privatevoid handleDisplayRemoved() {

        onDisplayRemoved();

        cancel();

    }

    2.      既然系统自动调用cancel方法,所以之前为了防止Presentation生命周期超出其所在Activity生命周期的尝试其实是没有特殊意义的。

     

    既然这样,貌似无法解决这种人为频繁插拔连接线导致Android处理异常,可是我觉得既然异常是在cancel方法中抛出的,是否可以通过重载一下Presentationcancel方法,将该异常捕获掉,至少保证APP不会崩溃。

        @Override

        public void cancel()

        {

            try

            {

                super.cancel();

            }

            catch (Exception e)

            {

                Log.exception(TAG, e);

            }

    }

     

    通过如上的处理后,再也没有出现过插拔连接线导致的异常崩溃,感觉这种修改确实有效,但是这种walk around的方法不一定是最好的,还希望有人能提出更好的解决方案,烦请分享,谢谢。

     

     

     

     

     

     

    展开全文
  • Python 日期和时间 Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个 time 和 calendar 模组可以帮忙。 什么是Tick? 时间间隔是以秒为单位的浮点小数。 每个...

    Python 日期和时间

    Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个 time 和 calendar 模组可以帮忙。


    什么是Tick?

    时间间隔是以秒为单位的浮点小数。

    每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。

    Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式。如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操作系统时间, 如下实例:

    #!/usr/bin/python

    import time;  #This is required to include time module.

     

    ticks = time.time()

    print "Number of ticks since 12:00am, January 1,1970:", ticks

    以上实例输出结果:

    Number of ticks since 12:00am, January 1, 1970: 7186862.73399

    Tick单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年某日。

     


    什么是时间元组?

    很多Python函数用一个元组装起来的9组数字处理时间:

    <td0到59<td=""></td0到59<>

    序号

    字段

    0

    4位数年

    2008

    1

    1 到 12

    2

    1到31

    3

    小时

    0到23

    4

    分钟

     

    5

    0到61 (60或61 是闰秒)

    6

    一周的第几日

    0到6 (0是周一)

    7

    一年的第几日

    1到366 (儒略历)

    8

    夏令时

    -1, 0, 1, -1是决定是否为夏令时的旗帜

    上述也就是struct_time元组。这种结构具有如下属性:

    序号

    属性

    0

    tm_year

    2008

    1

    tm_mon

    1 到 12

    2

    tm_mday

    1 到 31

    3

    tm_hour

    0 到 23

    4

    tm_min

    0 到 59

    5

    tm_sec

    0 到 61 (60或61 是闰秒)

    6

    tm_wday

    0到6 (0是周一)

    7

    tm_yday

    1 到 366(儒略历)

    8

    tm_isdst

    -1, 0, 1, -1是决定是否为夏令时的旗帜

     


    获取当前时间

    从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数。

    #!/usr/bin/python

    import time;

     

    localtime = time.localtime(time.time())

    print "Local current time :", localtime

    以上实例输出结果:

    Local current time : time.struct_time(tm_year=2013,tm_mon=7,

    tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2,tm_yday=198, tm_isdst=0)

     


    获取格式化的时间

    你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():

    #!/usr/bin/python

    import time;

     

    localtime = time.asctime( time.localtime(time.time()) )

    print "Local current time :", localtime

    以上实例输出结果:

    Local current time : Tue Jan 13 10:17:09 2009

     


    获取某月日历

    Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:

    #!/usr/bin/python

    import calendar

     

    cal = calendar.month(2008, 1)

    print "Here is the calendar:"

    print cal;

    以上实例输出结果:

    Here is the calendar:

        January 2008

    Mo Tu We Th Fr Sa Su

        1  2  3  4  5  6

     7  8  9 1011 12 13

    14 15 16 17 18 19 20

    21 22 23 24 25 26 27

    28 29 30 31

     


    Time模块

    Time模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:

    序号

    函数及描述

    1

    time.altzone
    返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。

    2

    time.asctime([tupletime])
    接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。

    3

    time.clock( )
    用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。

    4

    time.ctime([secs])
    作用相当于asctime(localtime(secs)),未给参数相当于asctime()

    5

    time.gmtime([secs])
    接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0

    6

    time.localtime([secs])
    接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。

    7

    time.mktime(tupletime)
    接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。

    8

    time.sleep(secs)
    推迟调用线程的运行,secs指秒数。

    9

    time.strftime(fmt[,tupletime])
    接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

    10

    time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
    根据fmt的格式把一个时间字符串解析为时间元组。

    11

    time.time( )
    返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

    12

    time.tzset()
    根据环境变量TZ重新初始化时间相关设置。

    Time模块包含了以下2个非常重要的属性:

    序号

    属性及描述

    1

    time.timezone
    属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。

    2

    time.tzname
    属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。

     


    日历(Calendar)模块

    此模块的函数都是日历相关的,例如打印某月的字符月历。

    星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。模块包含了以下内置函数:

    序号

    函数及描述

    1

    calendar.calendar(year,w=2,l=1,c=6)
    返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。

    2

    calendar.firstweekday( )
    返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

    3

    calendar.isleap(year)
    是闰年返回True,否则为false。

    4

    calendar.leapdays(y1,y2)
    返回在Y1,Y2两年之间的闰年总数。

    5

    calendar.month(year,month,w=2,l=1)
    返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

    6

    calendar.monthcalendar(year,month)
    返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

    7

    calendar.monthrange(year,month)
    返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

    8

    calendar.prcal(year,w=2,l=1,c=6)
    相当于 print calendar.calendar(year,w,l,c).

    9

    calendar.prmonth(year,month,w=2,l=1)
    相当于 print calendar.calendar(year,w,l,c)。

    10

    calendar.setfirstweekday(weekday)
    设置每周的起始日期码。0(星期一)到6(星期日)。

    11

    calendar.timegm(tupletime)
    和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。

    12

    calendar.weekday(year,month,day)
    返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。

     


    其他相关模块和函数

    在Python种,其他处理日期和时间的模块还有:


    Python 文件I/O

    本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档。

    打印到屏幕

    最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*- 
     
    print "Python 是一个非常棒的语言,不是吗?";

    你的标准屏幕上会产生以下结果:

    Python 是一个非常棒的语言,不是吗?

    读取键盘输入

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:

    • raw_input
    • input

    raw_input函数

    raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):

    #!/usr/bin/python
     
    str = raw_input("Enter your input: ");
    print "Received input is : ", str

    这将提示你输入任意字符串,然后在屏幕上显示相同的字符串。当我输入"Hello Python!",它的输出如下:

    Enter your input: Hello Python
    Received input is :  Hello Python

    input函数

    input([prompt]) 函数和raw_input([prompt])函数基本可以互换,但是input会假设你的输入是一个有效的Python表达式,并返回运算结果。

    #!/usr/bin/python
     
    str = input("Enter your input: ");
    print "Received input is : ", str

    这会产生如下的对应着输入的结果:

    Enter your input: [x*5 for x in range(2,10,2)]
    Recieved input is :  [10, 20, 30, 40]

    打开和关闭文件

    到现在为止,您已经可以向标准输入和输进行读写。现在,来看看怎么读写实际的数据文件。

    Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作。

    open函数

    你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。

    语法:

    file object = open(file_name [, access_mode][, buffering])

    各个参数的细节如下:

    • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
    • access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
    • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

    不同模式打开文件的完全列表:

    模式

    描述

    r

    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

    rb

    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

    r+

    打开一个文件用于读写。文件指针将会放在文件的开头。

    rb+

    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

    w

    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    wb

    以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    w+

    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    wb+

    以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    a

    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    ab

    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    a+

    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    ab+

    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    File对象的属性

    一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

    以下是和file对象相关的所有属性的列表:

    属性

    描述

    file.closed

    返回true如果文件已被关闭,否则返回false。

    file.mode

    返回被打开文件的访问模式。

    file.name

    返回文件的名称。

    file.softspace

    如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

    如下实例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 打开一个文件
    fo = open("foo.txt", "wb")
    print "Name of the file: ", fo.name
    print "Closed or not : ", fo.closed
    print "Opening mode : ", fo.mode
    print "Softspace flag : ", fo.softspace

    以上实例输出结果:

    Name of the file:  foo.txt
    Closed or not :  False
    Opening mode :  wb
    Softspace flag :  0

    Close()方法

    File对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

    当一个文件对象的引用被重新指定给另一个文件时,Python会关闭之前的文件。用close()方法关闭文件是一个很好的习惯。

    语法:

    fileObject.close();

    例子:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 打开一个文件
    fo = open("foo.txt", "wb")
    print "Name of the file: ", fo.name
     
    # 关闭打开的文件
    fo.close()

    以上实例输出结果:

    Name of the file:  foo.txt

    读写文件:

    file对象提供了一系列方法,能让我们的文件访问更轻松。来看看如何使用read()和write()方法来读取和写入文件。

    Write()方法

    Write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    Write()方法不在字符串的结尾不添加换行符('\n'):

    语法:

    fileObject.write(string);

    在这里,被传递的参数是要写入到已打开文件的内容。

    例子:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 打开一个文件
    fo = open("/tmp/foo.txt", "wb")
    fo.write( "Python is a great language.\nYeah its great!!\n");
     
    # 关闭打开的文件
    fo.close()

    上述方法会创建foo.txt文件,并将收到的内容写入该文件,并最终关闭文件。如果你打开这个文件,将看到以下内容:

    Python is a great language.
    Yeah its great!!

    read()方法

    read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    语法:

    fileObject.read([count]);

    在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

    例子:

    就用我们上面创建的文件foo.txt。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 打开一个文件
    fo = open("/tmp/foo.txt", "r+")
    str = fo.read(10);
    print "Read String is : ", str
    # 关闭打开的文件
    fo.close()

    以上实例输出结果:

    Read String is :  Python is

    文件位置:

    Tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后:

    seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

    如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

    例子:

    就用我们上面创建的文件foo.txt。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 打开一个文件
    fo = open("/tmp/foo.txt", "r+")
    str = fo.read(10);
    print "Read String is : ", str
     
    # 查找当前位置
    position = fo.tell();
    print "Current file position : ", position
     
    # 把指针再次重新定位到文件开头
    position = fo.seek(0, 0);
    str = fo.read(10);
    print "Again read String is : ", str
    # 关闭打开的文件
    fo.close()

    以上实例输出结果:

    Read String is :  Python is
    Current file position :  10
    Again read String is :  Python is

    重命名和删除文件

    Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。

    要使用这个模块,你必须先导入它,然后可以调用相关的各种功能。

    rename()方法:

    rename()方法需要两个参数,当前的文件名和新文件名。

    语法:

    os.rename(current_file_name, new_file_name)

    例子:

    下例将重命名一个已经存在的文件test1.txt。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 重命名文件test1.txt到test2.txt。
    os.rename( "test1.txt", "test2.txt" )

    remove()方法

    你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。

    语法:

    os.remove(file_name)

    例子:

    下例将删除一个已经存在的文件test2.txt。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 删除一个已经存在的文件test2.txt
    os.remove("test2.txt")

    Python里的目录:

    所有文件都包含在各个不同的目录下,不过Python也能轻松处理。os模块有许多方法能帮你创建,删除和更改目录。

    mkdir()方法

    可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。

    语法:

    os.mkdir("newdir")

    例子:

    下例将在当前目录下创建一个新目录test。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 创建目录test
    os.mkdir("test")

    chdir()方法

    可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。

    语法:

    os.chdir("newdir")

    例子:

    下例将进入"/home/newdir"目录。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 将当前目录改为"/home/newdir"
    os.chdir("/home/newdir")

    getcwd()方法:

    getcwd()方法显示当前的工作目录。

    语法:

    os.getcwd()

    例子:

    下例给出当前目录:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 给出当前的目录
    os.getcwd()

    rmdir()方法

    rmdir()方法删除目录,目录名称以参数传递。

    在删除这个目录之前,它的所有内容应该先被清除。

    语法:

    os.rmdir('dirname')

    例子:

    以下是删除" /tmp/test"目录的例子。目录的完全合规的名称必须被给出,否则会在当前目录下搜索该目录。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import os
     
    # 删除”/tmp/test”目录
    os.rmdir( "/tmp/test"  )

    文件、目录相关的方法

    三个重要的方法来源能对Windows和Unix操作系统上的文件及目录进行一个广泛且实用的处理及操控,如下:

    • File 对象方法: file对象提供了操作文件的一系列方法。
    • OS 对象方法: 提供了处理文件及目录的一系列方法。

     

     

    Python 异常处理

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。

    • 异常处理: 本站Python教程会具体介绍。
    • 断言(Assertions):本站Python教程会具体介绍。

    python标准异常

    异常名称

    描述

      

    BaseException

    所有异常的基类

    SystemExit

    解释器请求退出

    KeyboardInterrupt

    用户中断执行(通常是输入^C)

    Exception

    常规错误的基类

    StopIteration

    迭代器没有更多的值

    GeneratorExit

    生成器(generator)发生异常来通知退出

    StandardError

    所有的内建标准异常的基类

    ArithmeticError

    所有数值计算错误的基类

    FloatingPointError

    浮点计算错误

    OverflowError

    数值运算超出最大限制

    ZeroDivisionError

    除(或取模)零 (所有数据类型)

    AssertionError

    断言语句失败

    AttributeError

    对象没有这个属性

    EOFError

    没有内建输入,到达EOF 标记

    EnvironmentError

    操作系统错误的基类

    IOError

    输入/输出操作失败

    OSError

    操作系统错误

    WindowsError

    系统调用失败

    ImportError

    导入模块/对象失败

    LookupError

    无效数据查询的基类

    IndexError

    序列中没有此索引(index)

    KeyError

    映射中没有这个键

    MemoryError

    内存溢出错误(对于Python 解释器不是致命的)

    NameError

    未声明/初始化对象 (没有属性)

    UnboundLocalError

    访问未初始化的本地变量

    ReferenceError

    弱引用(Weak reference)试图访问已经垃圾回收了的对象

    RuntimeError

    一般的运行时错误

    NotImplementedError

    尚未实现的方法

    SyntaxError

    Python 语法错误

    IndentationError

    缩进错误

    TabError

    Tab 和空格混用

    SystemError

    一般的解释器系统错误

    TypeError

    对类型无效的操作

    ValueError

    传入无效的参数

    UnicodeError

    Unicode 相关的错误

    UnicodeDecodeError

    Unicode 解码时的错误

    UnicodeEncodeError

    Unicode 编码时错误

    UnicodeTranslateError

    Unicode 转换时错误

    Warning

    警告的基类

    DeprecationWarning

    关于被弃用的特征的警告

    FutureWarning

    关于构造将来语义会有改变的警告

    OverflowWarning

    旧的关于自动提升为长整型(long)的警告

    PendingDeprecationWarning

    关于特性将会被废弃的警告

    RuntimeWarning

    可疑的运行时行为(runtime behavior)的警告

    SyntaxWarning

    可疑的语法的警告

    UserWarning

    用户代码生成的警告

    什么是异常?

    异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

    一般情况下,在Python无法正常处理程序时就会发生一个异常。

    异常是Python对象,表示一个错误。

    当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。


    异常处理

    捕捉异常可以使用try/except语句。

    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

    如果你不想在异常发生时结束你的程序,只需在try里捕获它。

    语法:

    以下为简单的try....except...else的语法:

    try:
    <语句>        #运行别的代码
    except <名字>:
    <语句>        #如果在try部份引发了'name'异常
    except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
    else:
    <语句>        #如果没有异常发生

    try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

    • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
    • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
    • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

    实例

    下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,且并未发生异常:

    #!/usr/bin/python
     
    try:
       fh = open("testfile", "w")
       fh.write("This is my test file for exception handling!!")
    except IOError:
       print "Error: can\'t find file or read data"
    else:
       print "Written content in the file successfully"
       fh.close()

    以上程序输出结果:

     Written content in the file successfully

    实例

    下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,但文件没有写入权限,发生了异常:

    #!/usr/bin/python
     
    try:
       fh = open("testfile", "w")
       fh.write("This is my test file for exception handling!!")
    except IOError:
       print "Error: can\'t find file or read data"
    else:
       print "Written content in the file successfully"

    以上程序输出结果:

    Error: can't find file or read data

    使用except而不带任何异常类型

    你可以不带任何异常类型使用except,如下实例:

    try:
       You do your operations here;
       ......................
    except:
       If there is any exception, then execute this block.
       ......................
    else:
       If there is no exception then execute this block. 

    以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。


    使用except而带多种异常类型

    你也可以使用相同的except语句来处理多个异常信息,如下所示:

    try:
       You do your operations here;
       ......................
    except(Exception1[, Exception2[,...ExceptionN]]]):
       If there is any exception from the given exception list, 
       then execute this block.
       ......................
    else:
       If there is no exception then execute this block.  

    try-finally 语句

    try-finally 语句无论是否发生异常都将执行最后的代码。

    try:
    <语句>
    finally:
    <语句>    #退出try时总会执行
    raise

    实例

    #!/usr/bin/python
     
    try:
       fh = open("testfile", "w")
       fh.write("This is my test file for exception handling!!")
    finally:
       print "Error: can\'t find file or read data"

    如果打开的文件没有可写权限,输出如下所示:

    Error: can't find file or read data

    同样的例子也可以写成如下方式:

    #!/usr/bin/python
     
    try:
       fh = open("testfile", "w")
       try:
          fh.write("This is my test file for exception handling!!")
       finally:
          print "Going to close the file"
          fh.close()
    except IOError:
       print "Error: can\'t find file or read data"

    当在try块中抛出一个异常,立即执行finally块代码。

    finally块中的所有语句执行后,异常被再次提出,并执行except块代码。

    参数的内容不同于异常。


    异常的参数

    一个异常可以带上参数,可作为输出的异常信息参数。

    你可以通过except语句来捕获异常的参数,如下所示:

    try:
       You do your operations here;
       ......................
    except ExceptionType, Argument:
       You can print value of Argument here...

    变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。

    元组通常包含错误字符串,错误数字,错误位置。

    实例

    以下为单个异常的实例:

    #!/usr/bin/python
     
    # Define a function here.
    def temp_convert(var):
       try:
          return int(var)
       except ValueError, Argument:
          print "The argument does not contain numbers\n", Argument
     
    # Call above function here.
    temp_convert("xyz");

    以上程序执行结果如下:

    The argument does not contain numbers
    invalid literal for int() with base 10: 'xyz'

    触发异常

    我们可以使用raise语句自己触发异常

    raise语法格式如下:

    raise [Exception [, args [, traceback]]]

    语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。

    最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

    实例

    一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

    定义一个异常非常简单,如下所示:

    def functionName( level ):
       if level < 1:
          raise "Invalid level!", level
          # The code below to this would not be executed
          # if we raise the exception

    注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

    例如我们捕获以上异常,"except"语句如下所示:

    try:
       Business Logic here...
    except "Invalid level!":
       Exception handling here...
    else:
       Rest of the code here...

    用户自定义异常

    通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

    以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

    在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

    class Networkerror(RuntimeError):
       def __init__(self, arg):
          self.args = arg

    在你定义以上类后,你可以触发该异常,如下所示:

    try:
       raise Networkerror("Bad hostname")
    except Networkerror,e:
       print e.args

    出处:http://www.runoob.com/python/python-tutorial.html

    展开全文
  • 背景为了从逻辑控制器捕获数据,我使用screen作为终端仿真器,并通过KeySpan USA-19HS USB Serial Adapter连接我的MacBook。我创建了下面的bash脚本,这样我就可以键入talk2controller ,其中filename是数据文件的...
  • Java异常处理代码编写

    千次阅读 2019-08-19 10:12:38
    Java异常处理代码编写 java中的异常 在计算机程序运行的过程中,总是会出现各种各样的错误。 有一些错误是用户造成的,比如,希望用户输入一个int类型的年龄,但是用户的输入是abc: // 假设用户输入了abc: ...
  • 远程屏幕监控系统

    千次阅读 2018-05-12 20:41:13
    完整代码以及本文的word都在放在了Github上,你可以下载或使用它:远程屏幕监控系统项目地址,如果喜欢的话,就去点个Star吧 摘要 远程屏幕监控系统在生活中是很常见的,学校机房的机房管理系统、PC版QQ的远程...
  • C++应用软件在交付给客户使用或者试用后,可能会因为操作系统版本及硬件上的差异,出现这样那样的软件异常问题。特别是项目即将交互等待客户验收时,出现多种莫名其妙的异常问题,是比较棘手的,在有限的时间内去...
  • 使用echarts实现时间状态区间图

    千次阅读 2019-06-17 15:15:26
    // 这里使用 api.coord(...) 将数值在当前坐标系中转换成为屏幕上的点的像素值。 var end = api.coord([api.value(2), categoryIndex]); var height = api.size([0, 1])[1]; return { type: 'rect',// 表示这...
  • Flutter布局锦囊---屏幕顶部提醒

    千次阅读 2019-01-07 22:13:59
    “提醒页面”,显示在屏幕上方的文字提醒页面,不会覆盖原路由页面。 “路由导航”,使用Flutter的路由与导航组件来推(push)提醒页面。 “倒计时抛”,使用Flutter的倒计时组件自动抛(pop)提醒页面。 “过渡...
  • 使用Accord.Net实现屏幕录制

    千次阅读 2018-05-31 17:47:53
    需要使用其中的功能:1、屏幕截图功能;2、图片转视频   /// /// 截屏工具 /// Accord.Video.ScreenCaptureStream screenShot; /// /// 截屏转视频工具 /// Accord.Video.FFMPEG.VideoFileWriter ...
  •  关于这个话题我们需要了解屏幕唤醒的一些基本流程,物理按键的Keycode,CPU使用率,Low Memeory,还需要关注ANR(由于广播是按顺序发送的,ANR会导致唤醒屏幕的广播阻塞引起屏幕无法正常点亮),再结合现场其他的...
  • 2018-03-25电脑显示器的问题有很多原因可以导致屏幕抖动或闪烁,请尝试如下操作:一、显示刷新率设置不正确如果是刷新率设置过低,会导致屏幕抖动,检查方法是用鼠标右键单击系统桌面的空白区域,从弹出的右键菜单中...
  • 需求用例分析之一:异常

    万次阅读 2014-05-03 14:54:30
    在RUP和UML中,备选流的解释如下:备选事件流包括与正常行为相关的可选或异常特征的行为,同时也包括正常行为的各种变形。您可以将备选事件流看作是基本事件流的“绕行道”,有些备选事件流将返回到基本事件流,而...
  • 如何调暗计算机屏幕的亮度

    千次阅读 2021-06-26 12:35:00
    本文收集并整理了有关如何调暗计算机屏幕亮度的相关问题,并使用内容导航来快速访问.内容导航:Q1: 如何调整计算机屏幕的亮度和明亮时间无需单击属性,具体设置方法如下:首先,笔记本电脑设置如下:1. 单击计算机屏幕...
  • 图解python | 错误与异常处理

    千次阅读 2022-02-23 16:28:19
    在实际编程过程中,经常会看到一些报错信息,在python中也有专门的方式去处理错误和异常,保证全局流程顺畅。
  • 1 Android屏幕适配的度量单位和相关概念 建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章包含了阅读本文的一些基础知识,推荐阅读。 2 Android屏幕适配的...
  • Python异常处理的3个技巧

    千次阅读 2019-09-05 13:55:25
    如果你用 Python 编程,那么你就无法避开异常,因为异常在这门语言里无处不在。打个比方,当你在脚本执行时按 ctrl+c 退出,解释器就会产生一个 KeyboardInterrupt ...“捕获”指的是使用 try...except 包裹特定语...
  • Android 屏幕刷新机制

    千次阅读 2018-07-13 06:26:31
    时间进入第二个16ms:因为早在上一个16ms时间内,第1帧已经由CPU,GPU处理完毕。Display可以正常显示第1帧。但在当前的 16ms期间,CPU和GPU却并未及时绘制第2帧数据(注意前面的空白区),而是在本周期快结束时,CPU...
  • win10系统关闭屏幕和睡眠的区别

    千次阅读 2021-07-26 05:08:01
    如果没出现电源断开等问题,那么当唤醒睡眠状态时,首先从内存中读取数据,快读恢复电脑的运行状态,如果出现了电源断开等异常,那么在唤醒睡眠时,将从硬盘上恢复数据,速度相对较慢。 由此得出,系统进入睡眠模式...
  • ‍通常情况下,我们如果有一段时间没有使用笔记本电脑,那么笔记本会自动进入睡眠状态。有用户发现笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕,那么应该怎么解决这个问题呢?大家可以参考下面提供的方法...
  • 屏幕 Dynpro

    千次阅读 2017-02-11 09:42:15
    对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 l 屏幕序号(Screen number)。四个数字组成的序列号,用于在程序中确定屏幕,该序号在同一个ABAP程序内部是唯一的。 l 屏幕类型(Screen type)。ABAP中的...
  • 事实上,每次刷新出来的波形会在屏幕上停留一段时间后才消失。 这种波形在屏幕上从显示到消失的过程,我们称之为余辉效应。 因此模拟示波器的电子打在荧光屏上产生的荧光效果是随着时间渐渐变暗直到消失的,此即...
  • 这段时间在自己在模仿做知乎日报2.0 结果真机调试的时候发现屏幕尺寸有问题 出现了上下两条黑边.. 而在模拟器中是正常的 我在didFinishLaunching中输出UIScreen.mainScreen().bounds的值发现是这样.. ...
  • centos7 异常关机 分析。

    万次阅读 2019-05-09 10:59:30
    这台服务器配置为双路E5 + 6盘符Raid10阵列,虚拟磁盘835.491GB sas15000rpm硬盘 + ...后来直接装了物理机centos 7,EMM仍旧宕机不断,多次查看message日志和secure日志也没发现异常(系统异常保护没起作用?用于记...
  • 响应式(自适应屏幕

    千次阅读 多人点赞 2019-12-02 16:40:51
    这也是普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。 首先解释该标签的含义: ,initial-scale=1.0, ...
  • STM32F4 flash写入偶尔出现的异常调试

    千次阅读 2020-06-29 16:23:32
    今天在新的设备上,使用XMODEM协议下载升级问题,之前用了很多年都没出问题,突然在这个F4上面出问题了,单独调用都是好的,最后通过不断的调试发现原因,以前写入FLASH都是调用单字节或者单字烧写,最近修改了一个...
  • 我们习惯的做法是一个一个的将字按照屏幕上显示的,一点点重新输入一遍,这既浪费了大量的精力和时间又容易出现错误。有没有什么快速的方法,将屏幕上能看到的文字复制下来呢?其实解决方法很简单! 首先我们准备好...
  • Apple 在 iPhone 11 系列机型中,加入了一个验证机制,以便于用户判断自己使用的设备是否是原装屏幕,并建议用户不要自行或通过非官方授权渠道更换屏幕:如果在“设置”-“通用”-“关于本机”中看到以下信息,表示 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,124
精华内容 34,449
关键字:

屏幕使用时间异常