阅读目录
![](https://i-blog.csdnimg.cn/blog_migrate/75e27b1469b83650913f426fd16982b1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ed0d43e777c39e7bab30cd0ff0d9d26f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8dc3e28b9dc997b5819deda131b84a61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/145a9dcc729bfaac2cb7dbdb16a3c3b8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec1b259d9f13cc275728f56cbb969395.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de9f2ab9c0f72633fe28c95459200b10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4cb6262c58e9584f85994344d3981729.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cfb4b59f7835526241992b168c77c663.png)
![](https://i-blog.csdnimg.cn/blog_migrate/363d60baf782cb8b0df405cfc755a649.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3bfcae62265beaa0ad60e3b418a28633.png)
![](https://i-blog.csdnimg.cn/blog_migrate/12320331c5c64e0668e4d26050fc4659.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bd557a2f29d0e5db125922feeae2af0f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/26cf3b537c8a1c644cdcaf1e71a2267c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/baab303968666104dd94bc369248574a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5634cded3b9829312afa1ec9d8a47c0c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2827b35e29db8ed8e0b7f00f97435418.png)
![](https://i-blog.csdnimg.cn/blog_migrate/58c09e194c97b6ec177cf64418925d71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9187695fc1603557db8dd70458f5c687.png)
![](https://i-blog.csdnimg.cn/blog_migrate/28d4c88f95089f06eb1d72c99229652a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd2c5ec98f3529a1c5d04854db1e89f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/35852f4fbea32c9922055ee835dfa0fb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3cbfd10978bca2948fee4b71eab2c671.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fc685503400c8acaf253ef7f8b32b9f8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37ddfa2f390d48677182d79452b87476.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6d7ee96bba6c77a5560cce690f59fb7a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dac33a89e5042a3ccbbf7a045173dcb1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6ed8fd0d999722c9a31cb7faccd8f3e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/532f624b51dbcc7ddc556e0b0f3c5c5e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4fa2de432c381d9ecc184cc4272536c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/445e2298d69e8f104412fb149a97187b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/16a04611d11065bad33a7e38ce5fc69c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ef99f3913514f5076963d0e766b9727c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6d1fdd05f9c826d50e0dd4066a8c40f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a68357086e85888d3fca65562ae600b5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/137556a81f81d610333e945976da2f0d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ddadf62f1416b62b26b042914ee17453.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7dc8600d100e378959d44337eef7554b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b3e1feb5057291f2b6bab9cbf06ad205.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b705907e304159e2de0122f0f94b768.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c7b2e4451fe1a7f48ba12648ce5874e8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/93b73e38c4679aa7446c7ceb19a3bc84.png)
![](https://i-blog.csdnimg.cn/blog_migrate/015e6423aab92d9000136c44c3a42412.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cec53a80128cf60450a6377507aabd9a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fe74e17fc21ecd9ff6d50eacc6ce0c59.png)
![](https://i-blog.csdnimg.cn/blog_migrate/78455f38e88b2247b5a660ad1c3f6fc2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/adf11769615d821dc48a04506fd25863.png)
![](https://i-blog.csdnimg.cn/blog_migrate/38082acbb8c9c61169beccd7daceef0b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d33d6fdf0bed74423b85bf47864c42cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8ccff82bf1ebd9ff4b55b3ffc90467.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fb870f39b9b27371e559a027eb3e9306.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2cbb131e5fb1216e8a20c6dadc8ddd1f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a89b892f9e673e7b811c0832c6c09fb8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/72e67d5e8d0b3521323e035565c4b0c4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b320d5a666fa055b2f2fd6a375ef74ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dc76ad3ad376f66a4cbe3aa3a3e67b95.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5507482fecd961072754b4679a36673a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83c7473682ed68689c249ff210f1ed15.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be1bec1b202871f834ab55a037b126dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/22681633b9723570c4872363cbbeea93.png)
![](https://i-blog.csdnimg.cn/blog_migrate/64c192ddd2219b5ce012eea7002a3901.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5b23813c0e5595d786be7d6807014f83.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cd508aabd886922e3875e732dfa59939.png)
![](https://i-blog.csdnimg.cn/blog_migrate/da97b336dc395b630a78a98b04a8dcee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e83187328b27f6ee383cd2159218e832.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62d1bcbe5884946bf0c6ac7b4ccf6800.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d83dc2505027ca3b94da9105c188459d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b0aadbe77fb61e52ab0c5d18333e6123.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2777f0f3cc2d7f49f0b994f44f1a3e3f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba3185779d0b4a367eacaad7246415a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6bce3d63f02e2b580d969171f06ab63f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c71a714f244c4b560b1cca8f0a7c92ac.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7032e781464f67bb9f8bb258011ff1fd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6e6efc10455c3ae677ded7b17756d086.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3afdf65e1d072a0ece1cea7647e01a86.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a23d5a6fb72367227b430f6f5999ac56.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3371fe2aa55161e72aab973e73c2e6c7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1d1ec2c4e26a591191a9b4144fc6dd77.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2bc697734e5e159fba69bb8e1b31193d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6a025a22c775a83493add738f33d82ad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cd70d754797da444c1ae5188d4a27d00.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b9a411f98ac84e475957055cea458174.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06522a5d206dacc3e195258314ff4412.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dcc34bf2adbb961923c525069665e5c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1c8ede334aed7f6f79e533c607c06e7f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7f95df1848779d94c302d12e6d7a8ac5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/78b24e02b372072ee7f97b84940ac4eb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf432e1ce7090649c488fc7b71793dc2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/472192827345e8d439573200dbc62e19.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f92e378c046d5cfb49905b97e36e80a7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0232882bfed9f0a33b33d8380ce2f404.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3806d6c288bb67de9e3f1d40249e6f24.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbad99f102d6f345f4659652ee09fc12.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9427cbd650b2a99cf981d705d6e5a155.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6d55a8cab4deeea2d8dd1de08535778a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/427a265d8a2dbc3118a1a07deeebe196.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06c3db522f0d9e8ccca9f6483a82e2a7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/056de50d1cf41293630864a9215a0864.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2847c49e99e5060ffc3a5177487ff597.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f64d99f5db3fc37eb40555033a7f972.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c2494369ec629ec4d337668dcfc7e909.png)
![](https://i-blog.csdnimg.cn/blog_migrate/adfa49db4ce3553c18ce905bee0e0cb4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3d867d5824d37afec5aa638a71fd4da4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d10c0923c7bf264c8eca1484c500bbff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bb4112adcfeb7dc0d68aaef5465519fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/85dede4a49b5dc8af9e886f1809fe20f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c17375ea2bb65b22d2f95758761d5716.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dc415097cc6f0167f9ebd4a3ccd5ea61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/07d27d92f8d23c0f09d6164a510ef38f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/475970d1571634f84e4e194e0fece44d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8edb4454e891bf9fc2f17610471cc372.png)
![](https://i-blog.csdnimg.cn/blog_migrate/27cdd75647cd94aafc5cf6fd42fbc97b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8b60d6d691747dbe61342ad872f95802.png)
![](https://i-blog.csdnimg.cn/blog_migrate/da2c89f6d7eee0876f2a3c1237f3652a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/53f85494114c1ae7ff21bafcf356df66.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7c7fbbf86e46200b764e960166f3e4db.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f4778514ab5aa52b976f0a76449f1b66.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bebd5a3d989f2c3f59740590a554243.png)
![](https://i-blog.csdnimg.cn/blog_migrate/231304ad896689e834951136465fc5b8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fa0da927ee442ed8bb6d0cd449bb6d89.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2ab83678f215e20b6708ec967a55eaa3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f98ef0852b0eb3f8c0c28f5021704167.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e30daee2573f44b7a74ec270aafe8fd2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/71496ed655f6f1e7ed5391c1b1f9017f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00da8cafdace66c0ae5fda11cc6fdf98.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a49cafd41f90f7d8c7f7a63d01c0c2d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8d08d0d82444a82a36373c1c46bfcce5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b9d0681cfd4c09b9d05ee157c9ff12b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aeff99e838e59bc6bbe0613a49c4c648.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e24a77bc00b51ce5215566e00babec9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7dc25418ebf17c242444e8bff43955d0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b00562d2167637bcc957fd47f8c9bcc3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/049e645d22505ffdb0555e6cee1ed486.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a112ecf2740436955ab083e8bcb15b79.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be50224b6c32b910706aa787e4e8a6d8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/22e956a006d16264782fa227b59a56e3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/397f982c44d76498492f643df7d3a1fe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3ac67a7e23cd5d03de026cbd4f2fff67.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ac08ad87618759c7207dd2aa4fb9df22.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad15f3693324296209a5761f53e47f17.png)
![](https://i-blog.csdnimg.cn/blog_migrate/785ec448e79fe038296acfa3a8168ce7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c3d43898c01f7654ef0e155db3de990.png)
![](https://i-blog.csdnimg.cn/blog_migrate/103c7623b9d1a81b819c11f6d051252f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f3220b25827742f1413ced5680858968.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ac2cbcfa1f510a590a884b815735ce64.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b83fa212cbcc788cc69e5a116d79985.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7fcf9c273324121fa789ff5f38d14d4b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/506633cc09e40f5368ff9f3eb9c996b1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ce2df6d5e0ec5d77805e25a6c663a8d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b4ec8d6f5dd4e0115941a5f7c54fa3c6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/eb67df95b3eaa14e10f63963ac19beb1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/419f35535e8cfed4d2803a937949157c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b7617eab37fab29f6d40895b904897e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2073ec0991473733e00b8d3d1021e43.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ab19319f780cf58fd2cf10fa1047efd2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/42080f02601d90028892632e308587e9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/58e457f2c24eaa69a10113c7eb21d9c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9da2200d1d6ae0b3e0fe7536dcb76bc0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88e4f50922fd2ec97adf18887a26a99c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a01169a28d050519cf0399e30fca23bc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ff201dcfbc0bdab5a6d31583e8526e52.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b9c390acffaedfb5734b6aefdf7ea03b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d1d13386e1ecce9f170b5875b51049f9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3bc4970b6821360c9f199d9a679f3cae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/46f076358bcce743e42fbf588a5d451f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c8e51dfc4abc3dbf242450b4f86b2596.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9dacc571a21397468cf88d25d8a963ed.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8f648bcf0337104779f7b582ce5dbb3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/570086e1ca79d8b1cbe107c1ab669aa4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/670a790d9185a8430e7f57b1abcbfcb2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/44281de2a164ccac0e2a5eccaf143f40.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2c626321d1dc0c00c93769dafcde979.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2adb4526a13f06180c4acfe4c4739f5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0bd4c7603f8bd94d9ff54ad889dc799c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ccedf18f8b4821e2a8a03eabf805324.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5eecc919e9114d0cb9f2215edb5e71ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/724b7797e2c00384797699c17f29e15d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c45a880c01cf224fce479831bae13135.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ab756d00a13721bfac13ddfcb4a646c8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1c0c0689563ea62c4dfa83cb5d4d3ac.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de10938ad9754be410da112c206b0307.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8d1e5dc92f6416ef448490850b19a625.png)
![](https://i-blog.csdnimg.cn/blog_migrate/78b91404a8b9173ba567c40a270a5dac.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ffa1ffdd73015940a25c8175047a8841.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7c13d3a8a6cdbb28efce78c631030d08.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f10a810cdeddf90fe920dc495fcc30ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e26a2637172aa618318dd368e1dc8fc5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/748967a9488c85a8fba6daf3f059c6d8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3dd76ce77fc1d312baffdb656842ad04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/202cc6197de3a40a6c064fff391e6ba2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/832b8769107e19503c8c7e9b62bda19a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb65645f7d576557f04b744fe204e9df.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b1a837eaac6ed64df34a4541ba1b500.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e71bbc3cb9a1cf1bc6cdbc3bd6027042.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd4c5a6c5a0a04d6080b9422963e6da0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/98c4cdcabccf48407f57c3e9a5c4494d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/956a4fc03ae74760f74cb244f3fd9ad2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6814618012867f76041d430c0d296b9d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/45a757f24bc93f26c5fb1f8c1c3a7972.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bf7541229eeb53deecc15c59dcc1b00.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9743c60aeb1556c0d67dc76edcc52926.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fddb366b20f29d7577762a81ce3e0f2c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/11171a5b586858028204a9a547e479a1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a5f80da71a1db442701db511e711d116.png)
![](https://i-blog.csdnimg.cn/blog_migrate/67e6b9901148a3c2d871214dc162f9ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ac35c778dbcf90d7a5f1175c4b21fc4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/551db598d694acc7a277e9130af47234.png)
![](https://i-blog.csdnimg.cn/blog_migrate/452d22de868357bc7fb976480dc73b01.png)
![](https://i-blog.csdnimg.cn/blog_migrate/07652b004b13e022fc047b8c97a66f97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c642441317887f3337893320c230b823.png)
![](https://i-blog.csdnimg.cn/blog_migrate/238c9a454d21385da0885bd435c76e13.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec58177b28b46fda828f94228d5385a4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/950d6d91011f8b9372b0fdf6b5a7be15.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4d12847c8ced8f09f77e701d39f63653.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be74038416d4c8aeacb65bb0e1297655.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b96ab75363f7a1fb72a1d5a28ccdcd4c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d8db77db2f99425116518becc3c687fe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb0f93cb5e7429735dd1d1ccf4279513.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ccc8af61de7ce100b7096b9b7b1fc40b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/174485a2c11d4215f256193d6f1112d6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/047eb8858bece3e0eec9165babd2c04c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f792f6fc3577e69bea08c7ad8ce0a915.png)
![](https://i-blog.csdnimg.cn/blog_migrate/75934f591da7e1e334ce1027d8d07faf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06df126a03bfdd5178edd7ffe990c4ba.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3f9de296b096d1cc501657e8532377f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5c88f0f3a2605d663709402c0149f268.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec3d11ba6b0557911c3460220ffca1ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/44d3454c11f9b4be37fc75183549df04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/23a6ecc7b347f10dbd6fb3284b04084d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cf1d44a4b71be41b88ae5fa1eb416b90.png)
![](https://i-blog.csdnimg.cn/blog_migrate/129b1664ee4fe8965b76c1db97b34bea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fccf09335d07b5df8e645f582a8a097d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0aeed069099e08ad2b192c3c52d96526.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1c7dd35879d3c2994824b5277e1d3a63.png)
![](https://i-blog.csdnimg.cn/blog_migrate/59a13f7230ca0ecdf15ef9ccd4965b4b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0a7a022c949c120aeff42d889a9613c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/05978e9c7eacafc30463021d16934095.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74fdfb2aa3596b5333a325712636c625.png)
![](https://i-blog.csdnimg.cn/blog_migrate/99d480f170d45b05f55bb0b41a70249a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/610af645dc6192efa76dc61224d95f1a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92d63397bf71a20ffdeded3d3540be37.png)
![](https://i-blog.csdnimg.cn/blog_migrate/14e0a5493814707a2497da18c4d619e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f5e4c6fee4f15320f864730802ff9b99.png)
![](https://i-blog.csdnimg.cn/blog_migrate/93c3f863fe975af477c09ad8a9ca569f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/672ab7a50fbf1ff017131a5f3ff797f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c9c5988f607d21c14e18b33c640e1312.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9b41edc72c2b772ef3b7733da6c5c7ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d1e1ea6200d64dd49a0e1a87c23e0790.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae783fc147cfe1856aae834200473660.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7162289cb6f74bb95cbbf0ee0e0811dd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/171ba173687c972cf94bfdf5bea35030.png)
![](https://i-blog.csdnimg.cn/blog_migrate/68ab81a6ec49209a6299a7d7a664789b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3784801895c7d850b9ee344dad770afb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f20b848859b26ffedb5ae9f34aa7f72.png)
一 文件操作
一 介绍
计算机系统分为:计算机硬件,操作系统,应用程序三部分。
我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。
有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:
#1. 打开文件,得到文件句柄并赋值给一个变量 #2. 通过句柄对文件进行操作 #3. 关闭文件
二 在python中
#1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r #2. 通过句柄对文件进行操作 data=f.read() #3. 关闭文件 f.close()
三 f=open('a.txt','r')的过程分析
#1、由应用程序向操作系统发起系统调用open(...) #2、操作系统打开该文件,并返回一个文件句柄给应用程序 #3、应用程序将文件句柄赋值给变量f
四 强调!!!
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#强调第一点: 打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为: 1、f.close() #回收操作系统级打开的文件 2、del f #回收应用程序级的变量 其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源, 而python自动的垃圾回收机制决定了我们无需考虑del f,这就要求我们,在操作完毕文件后,一定要记住f.close() 虽然我这么说,但是很多同学还是会很不要脸地忘记f.close(),对于这些不长脑子的同学,我们推荐傻瓜式操作方式:使用with关键字来帮我们管理上下文 with open('a.txt','w') as f: pass with open('a.txt','r') as read_f,open('b.txt','w') as write_f: data=read_f.read() write_f.write(data)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#强调第二点: f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。 这就用到了上节课讲的字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。 f=open('a.txt','r',encoding='utf-8')
五 python2中的file与open
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#首先在python3中操作文件只有一种选择,那就是open() #而在python2中则有两种方式:file()与open() 两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,我们一般使用open()打开文件进行操作,而用file当做一个类型,比如type(f) is file
二 打开文件的模式
文件句柄 = open('文件路径', '模式')
模式可以是以下方式以及他们之间的组合:
Character | Meaning |
‘r' | open for reading (default) |
‘w' | open for writing, truncating the file first |
‘a' | open for writing, appending to the end of the file if it exists |
‘b' | binary mode |
‘t' | text mode (default) |
‘+' | open a disk file for updating (reading and writing) |
‘U' | universal newline mode (for backwards compatibility; should not be used in new code) |
#1. 打开文件的模式有(默认为文本模式): r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 #3. 了解部分 "+" 表示可以同时读写某个文件 r+, 读写【可读,可写】 w+,写读【可读,可写】 a+, 写读【可读,可写】 x, 只写模式【不可读;不存在则创建,存在则报错】 x+ ,写读【可读,可写】 xb
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
# 回车与换行的来龙去脉 http://www.cnblogs.com/linhaifeng/articles/8477592.html # U模式 'U' mode is deprecated and will raise an exception in future versions of Python. It has no effect in Python 3. Use newline to control universal newlines mode. # 总结: 在python3中使用默认的newline=None即可,换行符无论何种平台统一用\n即可
三 操作文件的方法
#掌握 f.read() #读取所有内容,光标移动到文件末尾 f.readline() #读取一行内容,光标移动到第二行首部 f.readlines() #读取每一行内容,存放于列表中 f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符 f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符 f.writelines(['333\n','444\n']) #文件模式 f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式 #了解 f.readable() #文件是否可读 f.writable() #文件是否可读 f.closed #文件是否关闭 f.encoding #如果文件打开模式为b,则没有该属性 f.flush() #立刻将文件内容从内存刷到硬盘 f.name
练习,利用b模式,编写一个cp工具,要求如下:
1. 既可以拷贝文本又可以拷贝视频,图片等文件
2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target_file
提示:可以用import sys,然后用sys.argv获取脚本后面跟的参数
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
import sys if len(sys.argv) != 3: print('usage: cp source_file target_file') sys.exit() source_file,target_file=sys.argv[1],sys.argv[2] with open(source_file,'rb') as read_f,open(target_file,'wb') as write_f: for line in read_f: write_f.write(line)
四 文件内光标移动
一: read(3):
1. 文件打开方式为文本模式时,代表读取3个字符
2. 文件打开方式为b模式时,代表读取3个字节
二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate
注意:
1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
import time with open('test.txt','rb') as f: f.seek(0,2) while True: line=f.readline() if line: print(line.decode('utf-8')) else: time.sleep(0.2)
五 文件的修改
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:
方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: data=read_f.read() #全部读入内存,如果文件很大,会很卡 data=data.replace('alex','SB') #在内存中完成修改 write_f.write(data) #一次性写入新文件 os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: for line in read_f: line=line.replace('alex','SB') write_f.write(line) os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
练习题:
1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数 apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 2. 修改文件内容,把文件中的alex都替换成SB