以前本身寫博客的時候,每次的都須要經過將本地圖片上傳到七牛雲,而後獲取圖片外鏈,再粘貼到MarkDown編輯器裏面,若是一篇博客裏面圖片比較少的時候,還能夠忍受,圖片多了就感受特別煩了,因此就上網查了一些資料,發現能夠經過拖拽自動上傳到服務器的,可是支持英文路徑,不支持中文,可是MarkDown裏面的圖片名稱基本上都是中文的,並且那個腳本是在python2.X上面是能夠拖拽的,可是在win10的python3.X上面就GG了,拖拽不了,最近恰好在學習python,就開始了踩坑之旅,其實我想實現的功能很簡單,大體以下:python
下面展現一下效果圖
git
咱們須要實現的功能大體分爲這幾步github
大體的流程就是這個樣子,跟上一篇上傳到fir的思路差很少,下面一步一步來實現這個思路。json
因爲個人圖片都是存儲到七牛上面的,因此使用的七牛雲帳號,固然你用什麼騰訊雲或者leancloud也是OK的,這個都可有可無,數組
我建立了兩個空間,因此有兩個,一個fatchao,一個image, UrlName通常都是orbm62bsw.bkt.clouddn.com服務器
經過七牛雲的python文檔
,實際就是直接抄的文檔,下面可恥地貼一下代碼編輯器
# coding=utf-8
from qiniu import Auth, put_file
# 須要填寫你的 Access Key 和 Secret Key
access_key = 'AYUazkNdav9YBCLBe06Ohld7nnmC_4xgxH65KW7M'
secret_key = 'J5hXbMdRwrI6n1R1THqmJYJJ5gTXm3UpBG7BP6u6'
# 構建鑑權對象
q = Auth(access_key, secret_key)
# 要上傳的空間
bucket_name = 'fatchao'
# 上傳到七牛後保存的文件名
key = '入地.png'
# 生成上傳 Token,能夠指定過時時間等
token = q.upload_token(bucket_name, key, 3600)
# 要上傳文件的本地路徑
localfile = 'F:\Demo\python\Markdown\img.png'
info = put_file(token, key, localfile)
print(info)複製代碼
{
'hash': 'Foix8wzKdhbXjim7H3OLnP0fdwiJ',
'key': '入地.png'
}
exception: None,
status_code: 200,
text_body: {
"hash": "Foix8wzKdhbXjim7H3OLnP0fdwiJ",
"key": "入地.png"
}複製代碼
上傳成功,下面來編寫一下完整的代碼學習
if __name__ == '__main__':
q = Auth(access_key, secret_key)
bucket = BucketManager(q)
# 獲取傳過來的路徑數組
imgUrls = sys.argv[1:]
# 遍歷數組進行文件上傳
for imgUrl in imgUrls:
# 獲取文件名
up_filename = os.path.split(imgUrl)[1]
# 上傳圖片至七牛雲
upload_img(bucket_name, up_filename, imgUrl)
# 保存進系統剪貼板
url_before_save = get_img_url(bucket_url, up_filename)
addToClipBoard(url_before_save)
# 寫進文本文件
save_to_txt()複製代碼
def addToClipBoard(text):
command = 'echo ' + text.strip() + '| clip'
os.system(command)複製代碼
def save_to_txt():
# save md_url to txt
with open(md_url_result, "a") as f:
f.write(url_before_save)
return複製代碼
須要在寫入文本的時候加上編碼方式,否則中文路徑會出現亂碼測試
def save_to_txt():
# save md_url to txt
with open(md_url_result, "a", encoding="utf-8") as f:
f.write(url_before_save)
return複製代碼
咱們的文件名後面都有一個文件後綴,相似與.jpg,.png等,這些其實是不須要的,下面優化一下優化
def get_img_url(bucket_url, file_name):
img_url = 'http://%s/%s' % (bucket_url, file_name)
# generate md_url
imageName = file_name.split('.')
md_url = "\n" % (imageName[0], img_url)
return md_url複製代碼
上面的效果圖基本上上已經簡化了一部分流程圖,可是每次都須要輸入python md.py 這幾個命令,仍是比較麻煩,有沒有辦法能夠在每次打開cmd窗口的時候就已經顯示了這幾行文字呢?咱們能夠把這幾行字寫在記事本中,固然應該又更好的辦法,能夠用.bat進行配置,只是如今對python還不是很熟,暫且先這樣,你們有什麼好的辦法的話,能夠提供一下。